Главная » C# » Создание экземпляров классов PublicRoom и PrivateRoom приложения управления освещением в Visual C# (Sharp)

0

Как было описано в предыдущей главе, при разработке  компонентов интерфейсы следует держать отдельно от реализаций. Это дает нам гибкость в модифицировии реализации в сборки, не требуя перекомпиляции своего кода пользователями сборки.

Для создания экземпляров реализаций нам нужна фабрика, что точно так же отнится к музею и его реализациям PrivateRoom и pubiicRoom. Но конструкционный мод, который собирает здание из ВОЗМОЖНЫХ комбинаций PrivateRoom И PubiicRoom, будет предоставлен вместе с музеем. Конструкционный метод полезен тем, что он предопределяет стандартное здание, со всеми комнатными группировками и коатами, вставленными должным образом.

ПРИМЕЧАНИЕ

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

Далее приводится код для реализации фабрики музея, которая добавляется  в про-

ек т  Museum:

public static class FactoryRooms {

public static IRoom CreatePrivateRoom() { return new PrivateRoom();

}

public static IRoom CreatePublicRoom() { return new PubiicRoom();

}

public static LightingController CreateBuilding() { LightingController controller = new LightingController(); object publicAreas =

controller.AddRoomGrouping("public viewing areas"); object privateAreas =

controller.AddRoomGrouping("private viewing areas"); controller.AddRoomToGrouping(publicAreas, new PublicRoom()); controller.AddRoomToGrouping(privateAreas, new PrivateRoom)); return controller;

}

}

Реализация имеет три метода: CreatePrivateRoom(), CreatePublicRoom () и Creat- ingBuilding(). To, ЧТО метод CreatePrivateRoom() И класс PrivateRoom имеют похожие наименования, является чистой случайностью. Метод с таким же эффектом МОЖНО было бы назвать CreateNonControlledRoomO. Методы CreatePrivateRoom () и CreatePubl icRoom () предназначены для определения идентификаторов  методов, которые пользователи могут понимать. Данные методы должны возвращать экзеляр IRoom.

Метод createBuiiding () является конструкционным методом и возвращает экзеляр LightingController. Возвращение экземпляра LightingController является приемлемым, т. к. этот тип имеет глобальную область видимости и может служить в качестве основы для конструкционного метода. В реализации конструкционного метода создаются экземпляры комнатных  группировок и комнат, которые добаяютс я К экземпляр у LightingController. Эт о работа , КОТОруЮ КОНСТруКЦИОННЫЙ метод выполняет вместо пользователя. Кроме этого, применение конструкционного метода позволяет избежать создания структур здания с грубыми ошибками в них.

ПРИМЕЧАНИЕ

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

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии