Может ли кто-нибудь раз и навсегда объяснить мне разницу между этими двумя и попытаться дать своего рода руководство для того, когда использовать каждый из них? Примеры были бы очень приятными.В чем разница между шаблоном проектирования стратегии и абстрактным шаблоном фабрики?
ответ
Стратегия - это обходное решение для языков, не имеющих первоклассных функций. Вы передаете объект стратегии, который решает какую-либо политику, которую вы хотите отделить от остальной части кода. Подумайте о сортировке на Java и о том, как они используют Comparators, Comparator - это объект стратегии, который позволяет вам определять политику для сортировки отдельно от алгоритма сортировки. Это позволяет вам повторно использовать код, отбрасывая различные стратегии.
Abstract Factory - объект, используемый для создания других объектов, причем абстрактная часть состоит из того, что у вас есть фабрика, которая возвращает реализацию фабрики, где пользователи фабрики получают доступ к ней через интерфейс. Таким образом, одна фабричная реализация может быть заменена на другую без каких-либо изменений для пользователей заводов, поскольку эти пользователи зависят только от интерфейсов объектов.
ИНТЕНТ отличается от деталей конструкции и реализации. Как только вы поймете эту идею, что INTENT имеет значение, тогда вы будете на правильном пути.
Understand the role of intent in design patterns
Intent for Strategy. Это поведенческий шаблон
- Определите семейство алгоритмов, инкапсулируйте каждый из них и сделайте их взаимозаменяемыми. Стратегия позволяет алгоритму варьироваться независимо от клиентов, которые его используют.
- Захват абстракции в интерфейсе, похороните детали реализации в производных классах.
Предназначение для абстрактной фабрики. Это шаблон создания
- Предоставьте интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов.
- Иерархия, которая инкапсулирует: множество возможных «платформ» и построение набора «продуктов».
Хорошо то, чем то, что цель/определил, что каждый из них направлен на? i remmber, что startegy больше связан с подбором правильного алгоритма ... но не смог найти что-то, чтобы положиться на – RanZilber
Заводский шаблон дизайна действует как завод и генерирует различные объекты во время выполнения согласно вашему запросу. Таким образом, управление выполняется во время выполнения, и вы можете решить, какой объект вам нужен во время выполнения. Таким образом, связь между объектами будет уменьшена.
С другой стороны, шаблон проектирования стратегии позволяет вам лучше контролировать иерархические структуры, используя отношение «имеет отношение» к «является» отношением. Поскольку, если мы пытаемся использовать наследование (а) в более сложном сценарии, нам может потребоваться переопределить методы, унаследованные в течение поколений, и избегать повторного использования кода.
Предположим, вы создали класс (или интерфейс) для животных, и в нем есть метод перемещения.
И вы надеетесь создать класс птиц, расширив его. Таким образом, вы добавите функции летания в метод move(). Но что происходит с пингвинами? У них будут функции ходьбы.
Итак, каждый раз, когда вы создаете животное, расширяя класс Animal, вам придется переопределить метод move() снова и снова. Вы можете четко понимать, что метод move() более уязвим для изменений, поэтому лучше всего отделить изменяющуюся часть от основных кодов.
Просто мы можем создать отдельную иерархию для методов move(). Вы можете назначить связанный метод move() объекту с помощью методов setter. Таким образом, управление передается во время выполнения. Следующая диаграмма иллюстрирует этот факт;
Ниже приведены 2 из моих сообщений в блоге, если вы хотите, вы можете направить их для получения более подробной информации.
Лучше. Я призываю вас проявлять осторожность в отношении ссылок на ваш блог слишком часто в целом, даже с лучшими ответами. Это соответствует требованию «раскрытия», но в значительной степени просто бессмысленным пухом. Слишком много ответов вроде этого, и вы можете * по-прежнему * отмечать спам. –
- 1. В чем разница между стратегией и шаблоном проектирования фабрики?
- 2. В чем разница между шаблоном стратегии и шаблоном посетителя?
- 3. В чем разница между шаблоном проектирования и шаблоном проектирования предприятия?
- 4. Разница между шаблоном стратегии и шаблоном делегирования
- 5. Разница между шаблоном состояния и шаблоном стратегии
- 6. В чем разница между шаблоном проектирования стратегии и шаблоном государственного дизайна?
- 7. в C# в чем разница между шаблоном стратегии и делегатами?
- 8. Разница между шаблоном стратегии и шаблоном состояния с использованием примера
- 9. В чем разница между шаблоном проектирования переднего контроллера и шаблоном проектирования MVC
- 10. В чем разница между рисунком фасада и шаблоном фабрики abstarct?
- 11. В чем разница между шаблоном стратегии и инжекцией зависимостей?
- 12. В чем разница между шаблоном проектирования Flyweight и кэшем Java
- 13. В чем разница между интерфейсом и шаблоном проектирования?
- 14. В чем разница между шаблоном проектирования интерпретатора и медиатора?
- 15. В чем разница между шаблоном проектирования Singleton и Registry
- 16. В чем разница между алгоритмом и шаблоном проектирования
- 17. В чем разница между шаблоном проектирования и Framework?
- 18. В чем разница между шаблоном шаблона JQuery и шаблоном метода
- 19. В чем разница между шаблоном расширения объектов и шаблоном адаптера?
- 20. В чем разница между шаблоном Builder и шаблоном Flyweight?
- 21. разница между шаблоном и шаблоном макета
- 22. Каковы сходства между шаблоном и шаблонами проектирования стратегии?
- 23. В чем разница между «признаком» и «шаблоном»?
- 24. В чем разница между темой и шаблоном?
- 25. В чем разница между шаблоном и курсом?
- 26. разница между шаблоном Hibernate и шаблоном JDBC
- 27. В чем разница между шаблоном проектирования фабрики из шаблона проектирования фабричного метода и абстрактной фабрикой в объекте c?
- 28. Разница между поведенческим шаблоном проектирования и творческим дизайном. Образец
- 29. Разница между шаблоном портала и шаблоном ASPX в Kentico
- 30. Разница между методом шаблонов (разделение) и шаблоном стратегии?
+1 для первого предложения – thepirat000