1. Введение в простую заводскую модель
Простой фабричный режим, также известный как «режим статического завода». Он принадлежит к «Режим создания» (шаблон для создания объекта) и является специальной реализацией шаблона «фабричного метода».
Обычно мы используем простой заводской шаблон для создания классов. Например, получение объектов пула потоков достигается через простой фабричный режим. Его структура схема следующей:
Фабрика: Фабрика является ядром простой заводской модели и предоставляет внешние интерфейсы. Когда клиент или другая программа хотят получить объекты продукта, они получают через заводской интерфейс.
Абстрактные продукты: абстрактные продукты абстрагируются (многие) различные продукты. Продукт может быть интерфейсом или абстрактным классом.
Конкретный продукт: объект продукта, возвращаемый на заводе, фактически создается через ConceteProduct.
2. Простая модель кода заводского рисунка
Public Class Factory {public Static Product newInstance () {return new ConceteProduct (); }} public Abstract Product {} public Class ConceteProduct Extends Product {public conceteProduct () {}} Классовая диаграмма модели
3. Практическое применение простой заводской модели
Когда мы пишем сервлет для обработки запросов клиентов, мы часто обрабатываем несколько бизнес -логики в одном сервлете, например:
Protected void Dopost (httpservletrequest, httpservletresponse response) {String flag = request.getParameter ("flag"); if (flag.equals ("service1")) {service1 (); } else if (flag.equals ("service2")) {service2 (); } ...}Выше приведено общий метод нашего сервлета для обработки многочисленной логики и написать кучу операторов, если еще. Лучшим способом является отделение запрошенного распределения от сервлета, чтобы сервлет только обрабатывал бизнес -логику. Мы рассматриваем различные запрошенные сервлеты как классы продукта. javax.servlet.httpservlet - это родительский класс продукта, а javax.servlet.servlet - интерфейс продукта. Таким образом, мы определяем сервисфактор, проанализируем запрос на URL в фильтре и передаем его сервисуфакторию для обработки. Это типичное простое заводское приложение.
@WebFilter ("/TransRequest") открытый класс TransRequest реализует Filter {private String ServletName; @Override public void dofilter (запрос ServletRequest, ответ ServletResponse, FilterChain Chain) Throws IOException, ServletException {httpservlectrequest myRequest = (httpservletrequest); // Получите запрошенное имя сервлета, здесь мы согласны с тем, что запрос находится в форме/servletname names [] = myRequest.getRequesturi (). Trim (). Split ("/"); ServletName = имена [2]; if (ServletName! = null) {// Ниже приведены два наиболее типичных примера простых заводов Сервлета = Сервлеточный Факторию.creatEServlet (ServletName); Servlet.service (запрос, ответ); } else chain.dofilter (запрос, ответ); } Каждый раз, когда мы просим запрос, мы используем завод для производства сервлета, который может избежать настройки большого количества информации о пути сервлета в XML. И это также сделает логику более ясной, и сервлеты справляются с бизнесом только на бизнес -уровне.
Категории фабрики следующие:
public Class ServletFactory {public Static Servlet CreateServlet (String ServletName) Throws ServletException {if (servletName.equals ("servletName1")) {return new service1 (); } else if (servletname.equals ("servletname2")) {return new service2 (); } else {бросить новое ServletException ("Нет такого сервлета"); }}}Хотя приведенный выше фабричный класс не откладывает громоздкий, если еще, идея использования простой фабрики все еще решает некоторые проблемы. Простая фабрика - это очень простой шаблон дизайна, который нельзя считать шаблоном дизайна, а решения также ограничены. Приведенное выше распределение запросов было реализовано. Например, Struts2, конечно, структура не является простой фабрикой.
4. Резюме
Простая заводская модель, чтобы подвести итог, представляет собой фабричный класс, интерфейс продукта (на самом деле, она также может быть абстрактным классом или даже обычным родительским классом) и группой конкретных продуктов, которые реализуют интерфейсы продукта. Этот фабричный класс создает конкретный класс реализации, основанный на пропущенных параметрах и преобразует его вверх в интерфейс в результате.