Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Здравствуйте, Максим Рогожин, Вы писали:
МР>паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Здравствуйте, kov_serg, Вы писали:
МР>>паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
_>И где он его нарушает?
Ну типа при добавлении "фабричного метоода" у класса появляется две функции — то что он делал раньше (основная), и "создание экземляров" (дополнительная)
Это разве не нарушение SRP?
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
МР>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Я бы посоветовал почитать про high cohesion and low coupling. Можно про весь GRASP.
Если коротко, то пусть создает, если именно у этого класса и объекта есть знания о том, как правильно создавать.
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, Максим Рогожин, Вы писали:
МР>>Привет!
МР>>Собственно вопрос: паттерн Фабричный метод нарушает Single Responcibility Principle? (Согласно паттерну Фабричный метод в классе должен быть метод (виртуальный) для создания экземпляров класса (этого самого класса?)).
Doc>А откуда взято требование "этого самого класса"?
Хорошо. Но если он создает объекты другого класса, то тогда Фабричный метод — это Абстракная фабрика с единственным методом?
Здравствуйте, Максим Рогожин, Вы писали:
МР>Хорошо. Но если он создает объекты другого класса, то тогда Фабричный метод — это Абстракная фабрика с единственным методом?
Ну в принципе можно сказать, что это частный упрощенный случай фабрики — для одного объекта и, как следствие, без необходимости гарантировать что создается одно и тоже "семейство" объектов.