Я не уверен, как вы можете решить некоторые проблемы как по заводским, так и по шаблонам команд. Они решают совершенно разные проблемы.
Abstract Factory обрабатывает создание объектов таким образом, что вы можете легко переключаться между семействами продуктов и обеспечивать согласованность объектов (т. Е. Не смешивать разные семейства продуктов случайно). Даже если существует только одно семейство продуктов, оно создает гибкую систему, в которой проще управлять созданными объектами.
Фабричный метод откладывает создание объекта на подкласс, так как базовый класс не знает, какой конкретный класс создать. Здесь базовый класс знает, когда создавать объект, но не знает, какой конкретный объект создать.
И команда используется для инкапсуляции запроса, чтобы вы обрабатывали запрос точно так же, как другие объекты, например, передавали запрос в качестве параметра другому методу / объекту, запросы очереди, повторно использовали запрос и т. Д. создание объектов.
Если я не очень сильно ошибаюсь, это отдельные паттерны, которые атакуют отдельные проблемы. Вы можете проверить Design Patterns от GoF и Head First Design Patters для получения подробной информации об этих шаблонах.