Чрезмерное использование заводского образца - PullRequest
3 голосов
/ 04 марта 2012

Где я не должен использовать фабричный шаблон, потому что все вокруг меня говорят мне не создавать экземпляр конкретного объекта. С фабриками нелегко иметь дело, когда дело доходит до тестирования, и я не хочу создавать фабрику для каждого возможного объекта, который я создаю. Вдобавок ко всему этому беспорядку, почему я должен иметь фабрику синглтона?

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Вы должны программировать против интерфейсов, используя фабричные шаблоны, потому что все безумие.

Синглтон может быть полезен, но опять же только при необходимости / желании.

Главное не использовать вещи, которые вы не понимаете или не видите смысла, стоит почитать книгу Мартина Фаулера, а затем подумать об этом снова, и вы можете заключить, что средний путь вам подходит.

В программировании нет правильного / неправильного, зависит от многих факторов. Даже использование интерфейса для всего может быть болезненным, но это всегда окупается за меня.

0 голосов
/ 07 октября 2015

Тип интерфейса - это спецификация протокола, потенциально поддерживаемая многими типами объектов.По возможности используйте базовые классы вместо интерфейсов.С точки зрения управления версиями классы более гибкие, чем интерфейсы.С помощью класса вы можете отправить версию 1.0, а затем в версии 2.0 добавить новый метод в класс.Пока метод не является абстрактным, любые существующие производные классы продолжают функционировать без изменений.

Например, предоставление интерфейса для адаптеров данных затруднительно и не приносит никакой реальной выгоды.Разработчикам все равно придется программировать специально для каждого адаптера, так что предоставление интерфейса дает лишь незначительную выгоду.Однако вам необходимо поддерживать согласованность между всеми адаптерами.Хотя интерфейс или абстрактный класс не подходит в этой ситуации, обеспечение согласованного шаблона очень важно.Вы можете предоставить согласованные шаблоны для разработчиков в базовых классах.Следуйте этим рекомендациям по созданию базовых классов.

Интерфейсы подходят в следующих ситуациях:

  • Несколько не связанных классов хотят поддерживать протокол.

  • Эти классы уже имеют установленные базовые классы (например, некоторые являются элементами управления пользовательского интерфейса, а некоторые являются веб-службами XML).

  • Агрегирование не подходит илипрактический.

Во всех других ситуациях наследование классов является лучшей моделью.

...