Когда скрывать иерархию наследования в конкретном классе?

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

Я заметил. Net framework решила реализовать Socket таким образом (вместо создания DatagramSocket вы передаете SocketType при создании). Каковы некоторые рекомендации, чтобы решить, когда допустимо сгладить иерархию в один конкретный класс, как этот?

6
задан Alex 12 May 2015 в 16:31
поделиться