Реализация объекта фабрики - PullRequest
0 голосов
/ 30 августа 2010

Я хочу создать фабрику объектов в C #. Я хочу, чтобы мои объекты создавались только через эту фабрику объектов, как этого добиться? Я знаю, как создать простую фабрику объектов, например сатирический класс с открытыми методами, которые создают и инициализируют мои объекты. Но мне нужно убедиться, что люди могут создавать экземпляры объектов только через фабрику объектов, какие-либо идеи?

P.S. Я не хотел бы включать какие-либо размышления, просто используйте простой подход ООП.

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Создайте публичный интерфейс под названием Widget.Затем создайте класс с именем WidgetFactory с помощью метода с именем newWidget ();который возвращает виджет.Определите дополнительный класс внутри WidgetFactory "WidgetImpl", который реализует интерфейс Widget.Это не будет доступно за пределами WidgetFactory.Реализуйте newWidget () путем создания и возврата нового экземпляра WidgetImpl.

Другими словами, используйте интерфейс в сочетании с реализацией на уровне классов, чтобы скрыть реализацию.

1 голос
/ 30 августа 2010

Вам нужно как-то скрыть реализацию класса, который вы хотите создать для фабрики, чтобы единственный доступный метод - использовать фабрику.В противном случае вы не сможете остановить людей, непосредственно создающих экземпляры класса.Другой способ - скрыть конструкторы класса, если вы не можете скрыть сам класс.Чаще всего это делается (в Java) с помощью закрытых и пакетных закрытых классов и методов.

Но учтите, что разработчику нередко необходим доступ к классу.Хороший пример может быть в модульном тесте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...