Паттерн Фабричный метод нарушает SRP?
От: Максим Рогожин Россия  
Дата: 28.05.19 20:21
Оценка:
Привет!

Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Re: Паттерн Фабричный метод нарушает SRP?
От: kov_serg Россия  
Дата: 28.05.19 21:04
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).


И где он его нарушает?
Re[2]: Паттерн Фабричный метод нарушает SRP?
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.05.19 21:18
Оценка:
Здравствуйте, kov_serg, Вы писали:

МР>>паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).


_>И где он его нарушает?


Ну типа при добавлении "фабричного метоода" у класса появляется две функции — то что он делал раньше (основная), и "создание экземляров" (дополнительная)
Это разве не нарушение SRP?
Re: Паттерн Фабричный метод нарушает SRP?
От: Doc Россия http://andrey.moveax.ru
Дата: 29.05.19 01:55
Оценка: +4
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!


МР>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).


А откуда взято требование "этого самого класса"?
Re: Паттерн Фабричный метод нарушает SRP?
От: Sinclair Россия https://github.com/evilguest/
Дата: 29.05.19 04:17
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:
МР>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Нет конечно. Одного взгляда на картинку в статье должно быть достаточно, чтобы поставить всё на место: https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B1%D1%80%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Паттерн Фабричный метод нарушает SRP?
От: ylem  
Дата: 29.05.19 08:23
Оценка: 3 (1)
МР>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).

Я бы посоветовал почитать про high cohesion and low coupling. Можно про весь GRASP.

Если коротко, то пусть создает, если именно у этого класса и объекта есть знания о том, как правильно создавать.

https://www.yegor256.com/2016/04/05/printers-instead-of-getters.html
https://www.yegor256.com/2017/12/19/srp-is-hoax.html

Автор, конечно, экстремист, не всегда умелый тролль и вообще неприятный тип, но кроме того, что он писатель, он еще и действующий инженер-программист.
Отредактировано 29.05.2019 9:58 ylem . Предыдущая версия .
Re[2]: Паттерн Фабричный метод нарушает SRP?
От: Максим Рогожин Россия  
Дата: 23.06.19 21:52
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Здравствуйте, Максим Рогожин, Вы писали:


МР>>Привет!


МР>>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).


Doc>А откуда взято требование "этого самого класса"?


Хорошо. Но если он создает объекты другого класса, то тогда Фабричный метод — это Абстракная фабрика с единственным методом?
Re[3]: Паттерн Фабричный метод нарушает SRP?
От: Doc Россия http://andrey.moveax.ru
Дата: 24.06.19 03:54
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Хорошо. Но если он создает объекты другого класса, то тогда Фабричный метод — это Абстракная фабрика с единственным методом?


Ну в принципе можно сказать, что это частный упрощенный случай фабрики — для одного объекта и, как следствие, без необходимости гарантировать что создается одно и тоже "семейство" объектов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.