Концепция простого заводского шаблона
Он должен создать фабричный класс и создать экземпляры некоторых классов, которые реализуют один и тот же интерфейс. Суть простого заводского шаблона заключается в том, что фабричный класс динамически определяет, какой экземпляр класса продукта (эти классы продукта наследуют от родительского класса или интерфейса), должен создаваться на основе входящих параметров.
Диаграмма UML простого заводского режима
Простой заводской код шаблона
Когда я изучал простую заводскую модель, я использовал пример, связанный с людьми. Люди разделены на мужчин и женщин в мире и сначала определяют абстрактный интерфейс для продуктов человека.
/** * Это заводской пакет шаблонов */пакет com.roc.factory;/** * Аннотация интерфейса продукта Human * @author liaowp * */public interface Human {public void say ();}Затем у мужчин и женщин есть способы выступить.
/** * Это заводской пакет с шаблонами */пакет com.roc.factory;/** * man * @author liaowp * */public class man реализует человеческий {/ * Скажи метод * @see com.roc.factory.human#sake () */ @ @ @@see public void говорит () {System.out.println ("Man"); }} /** * Это заводской пакет с шаблонами */пакет com.roc.factory;/** woman * @author liaowp * */public class Женщина реализует человеку {/ * Скажите метод * @see com.roc.factory.human#say () */@override public void говорит () {system.out.println ("Женщина"); }}Наконец, напишите фабричный класс, чтобы создать мужчин и женщин. Первый метод достигается с использованием логического суждения.
пакет com.roc.factory;/** * Simple Factory * @author liaowp * */public class samplefactory {public static makehuman (String type) {if (type.equals ("man")) {Human man = new Man (); возвращаемый человек; } else if (type.equals ("womman")) {Human woman = new Woman (); возвращай женщину; } else {System.out.println ("не может произвести"); вернуть ноль; }}}Второй метод состоит в том, чтобы использовать радиацию Java для его реализации. Я думаю, что этот тип реализации лучше.
пакет com.roc.factory;/** * Простая реализация заводского излучения * @author liaowp * */public class samplefactory1 {public static Human Makehuman (класс C) {Human Human = null; try {human = (human) class.forname (c.getName ()). newInstance (); } catch (instantiationException e) {// todo Автогенерированная система сгенерированных блок Catch.out.println («Абстрактные классы или интерфейсы не поддерживаются»); e.printstacktrace (); } catch (allogalAccessException e) {// todo Автогенерированный блок улова e.printstacktrace (); System.out.println («Нет достаточных разрешений, то есть частные объекты не могут быть доступны»); } catch (classnotfoundexception e) {// todo Автогенерированный блок-системы. e.printstacktrace (); } вернуть человека; }}Наконец, код клиента
пакет com.roc.factory;/** * Простой фабричный тест * @author liaowp * */public class client {public static void main (string [] args) {// ЧЕЛОВЕЧЕСКИЙ ЧЕЛОВЕК = SAMERFACTORY.MAKEHUMAN («Человек»); // Человек Samplefactory.makehuman ("tttt"); ЧЕЛОВЕКА = SAMPLACTORY1.MAKEHUMAN (MAN.CLASS); man.say (); Человеческая женщина = SampleFactory1.makeHuman (woman.class); женщина.say (); }} Простой сценарий приложения заводского режима
Преимущества: заводский класс является ключом ко всей модели. Он содержит необходимые логические суждения и определяет, какой конкретный объект класса следует создавать на основе информации, предоставленной внешним миром. Используя фабричный класс, внешний мир может избавиться от смущающей ситуации, связанного с непосредственным созданием конкретных объектов продукта, и должен нести только ответственность за объекты «потребления». Неважно, как эти объекты создаются и организованы. Их соответствующие обязанности и права разъясняются, что способствует оптимизации всей архитектуры программного обеспечения.
Недостатки: поскольку фабричный класс концентрирует логику создания всех случаев, нарушает принцип высокого распределения ответственности, вся логика создания сосредоточена в одном фабричном классе; Классы, которые он может создать, могут быть рассмотрены только заранее. Если необходимо добавить новый класс, необходимо изменить заводский класс. Поскольку количество конкретных категорий продуктов в системе продолжает расти, для заводских классов может возникнуть требование создавать различные экземпляры в соответствии с различными условиями. Это суждение об условиях и суждении конкретных типов продуктов переплетается вместе, что затрудняет избежать распространения функций модуля, что очень неблагоприятно для технического обслуживания и расширения системы;
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.