Лучшее руководство по Абстрактный узор завод в 2024 году. В этом руководстве вы можете изучить введение,реализация,
Абстрактная фабрика (Abstract Factory Pattern) создается вокруг супер растений других растений. Завод также известен как супер другие заводы фабрики. Этот тип шаблонов проектирования принадлежат создать схему, которая обеспечивает лучший способ для создания объектов.
В абстрактная фабрика, интерфейс отвечает за создание связанных растительных объектов, без явного указания их классы. Каждый созданный объект, в соответствии с завода может обеспечить заводской модели.
Цель: создать серию интерфейса связанных или зависимых объектов без указания их конкретных классов.
Главным образом решить: Основная проблема опций интерфейса.
Когда использовать: Системные продукты имеют более одного семейства продуктов, а также единственная система , в которой семейство потребительских товаров.
Как исправить: в семействе продуктов внутри, определить несколько продуктов.
Код ключа: агрегатные несколько аналогичных продуктов на заводе.
Примеры применения: работа, для того , чтобы принять участие в некоторых встречах, должно быть два или более комплектов одежды его, скажем, деловой костюм (комплекты, ряд конкретных продуктов), платье способа (комплекты, ряд конкретных продуктов), даже для семьи Вы можете иметь деловые женщины, бизнес мужской, женская мода, мужская мода, они также комплекты, а именно ряд конкретных продуктов.Предположим, что ситуация (в действительности не существует, или же, не коммунизм, но в пользу абстрактного описания заводского образца), в вашем доме, один шкаф (бетонный завод) может хранить только один такой одежда (комплекты, серия конкретного продукта), каждый раз, когда вы берете этот комплект одежды из шкафа, естественно, вынимают. С OO думать, чтобы понять, все гардероб (бетонный завод) являются шкафы класса (абстрактная фабрика) один, и каждый из них набор одежды и в том числе конкретной куртки (конкретного продукта), брюки (специфический продукт), это на самом деле конкретная рубашка куртка (абстрактные продукты), специальные брюки брюки (другой абстрактный продукт).
Плюсы: Когда семейство продуктов больше объектов предназначены для совместной работы, мы можем гарантировать , что клиент всегда используют только того же семейства объектов.
Недостатки: Расширенная семейство продуктов очень трудно, увеличить ассортимент продукта, как в абстрактной Творца Рижского кода, но и добавить специальный код внутри.
Сценарии использования: 1, QQ для кожи, набор изменений вместе.2, генерировать различные процедуры операционной системы.
Примечание: Расширенное семейство продуктов трудно, легко расширить уровень продукта.
Мы создадим интерфейс и реализацию класса интерфейсаформыицветаэтих объектов. Следующим шагом является создание абстрактного класса фабрикиAbstractFactory.Затем определите класс фабрикиShapeFactoryиColorFactory,эти два класса на заводе расширяетсяAbstractFactory.Затем создать классFactoryProducerфабрики создателя /строитель.
AbstractFactoryPatternDemo,наши демонстрационные классы , использующиеFactoryProducer, чтобы получитьAbstractFactoryобъект. Она проходит форма информации оформе(круг / RECTANGLE / квадратное) кAbstractFactory,он должен получить тип объекта. Он также передает информацию о цветеЦвет(красный / зеленый / синий) дляAbstractFactory,он должен получить тип объекта.
Интерфейс для создания формы.
Shape.java
Открытый интерфейс Shape { недействительным ничья (); }
Создать класс сущностей, который реализует интерфейс.
Rectangle.java
Открытый класс Прямоугольник реализует Shape { @Override общественного недействительными ничья () { ( "Метод Внутри Прямоугольник :: ничья ().") System.out.println; } }
Square.java
Открытый класс Square реализует Shape { @Override общественного недействительными ничья () { ( "Метод Внутри площади :: ничья ().") System.out.println; } }
Circle.java
Открытый класс Circle реализует Shape { @Override общественного недействительными ничья () { ( "Метод Внутри круга :: ничья ().") System.out.println; } }
Создание интерфейса для цвета.
Color.java
открытый интерфейс Color { пустота заполнения (); }
Создать класс сущностей, который реализует интерфейс.
Red.java
Открытый класс Красный цвет реализует { @Override заливка общественного недействительными () { ( "Метод Внутри Red :: заливка ().") System.out.println; } }
Green.java
Открытый класс Зеленый цвет реализует { @Override заливка общественного недействительными () { ( "Метод Внутри Green :: заливка ().") System.out.println; } }
Blue.java
Открытый класс Синий реализует цвет { @Override заливка общественного недействительными () { ( "Метод Внутри Синий :: заливки ().") System.out.println; } }
Создать абстрактный класс для цвета и формы объектов, чтобы получить завод.
AbstractFactory.java
общественного абстрактного класса AbstractFactory { Цвет абстрактного GetColor (String цвет); абстрактной формы getShape (String форма); }
Создание расширенного AbstractFactory фабрики классов, генерацию объекта класса сущностей на основе данной информации.
ShapeFactory.java
Открытый класс ShapeFactory расширяет AbstractFactory { @Override Форма общественного getShape (String shapeType) { если (shapeType == NULL) { возвращать нуль; } если (shapeType.equalsIgnoreCase ( "КРУГ")) { вернуть новый круг (); } Иначе, если (shapeType.equalsIgnoreCase ( "Прямоугольник")) { вернуть новый прямоугольник (); } Иначе, если (shapeType.equalsIgnoreCase ( "КВАДРАТ")) { вернуть новый квадрат (); } возвращать нуль; } @Override Цвет GetColor (String цвет) { возвращать нуль; } }
ColorFactory.java
Открытый класс ColorFactory расширяет AbstractFactory { @Override Форма общественного getShape (String shapeType) { возвращать нуль; } @Override Цвет GetColor (String цвет) { если (цвет == NULL) { возвращать нуль; } если (color.equalsIgnoreCase ( "RED")) { возвращать новый красный (); } Иначе, если (color.equalsIgnoreCase ( "ГРИН")) { вернуть новый зеленый (); } Иначе, если (color.equalsIgnoreCase ( "СИНИЙ")) { вернуть новый синий (); } возвращать нуль; } }
Создание фабрики категории Создатель / строитель, проходя через форму или цвет, чтобы получить информацию завода.
FactoryProducer.java
Открытый класс FactoryProducer { общественности статической AbstractFactory getFactory (выбор String) { если (choice.equalsIgnoreCase ( "ВГК")) { вернуть новый ShapeFactory (); } Иначе, если (choice.equalsIgnoreCase ( "COLOR")) { вернуть новый ColorFactory (); } возвращать нуль; } }
Используйте FactoryProducer, чтобы получить AbstractFactory, чтобы получить объект класса, передавая информацию о типе сущности.
AbstractFactoryPatternDemo.java
Открытый класс AbstractFactoryPatternDemo { государственной статической силы основных (String []) {агдз // Получить форму фабрики AbstractFactory ShapeFactory = FactoryProducer.getFactory ( "SHAPE"); // Получить объект форма круг форма shape1 = shapeFactory.getShape ( "КРУГ"); // Вызываем метод рисования из shape1.draw Circle (); // Получить объект форму прямоугольника Shape shape2 = shapeFactory.getShape ( "Прямоугольник"); // Вызываем метод рисования из shape2.draw прямоугольника (); // Получить форму объекта квадратной формы shape3 = shapeFactory.getShape ( "КВАДРАТ"); // Вызываем метод рисования площади shape3.draw (); // Получить цвет Фабрики AbstractFactory colorFactory = FactoryProducer.getFactory ( "COLOR"); // Получить цвет объекта Красный цвет цвет1 = colorFactory.getColor ( "RED"); // Вызов метода заливки Красный color1.fill (); // Получить объект цвет зеленый цвет color2 = colorFactory.getColor ( "Зеленый"); // Вызов метода заполнения color2.fill Грина (); // Получить объект цвет синий цвет color3 = colorFactory.getColor ( "синий"); // Вызов метода заливки Синий color3.fill (); } }
Проверьте выход.
Внутри круга :: ничья () метод. Внутри прямоугольника :: ничья () метод. Внутри площади :: ничья () метод. Внутри Red :: заливка () метод. Внутри метода Green :: наполняющей (). Внутри Синий :: заливки () метод.