Latest web development tutorials

Фабричный режим

Фабрика шаблон (Factory Pattern) Java является одним из наиболее часто используемых шаблонов проектирования. Этот тип шаблонов проектирования принадлежат создать схему, которая обеспечивает лучший способ для создания объектов.

В режиме Factory, мы не будем подвергать клиента, чтобы создать логический при создании объекта, а также путем использования общего интерфейса, чтобы указать на вновь созданный объект.

введение

Цель: Определение интерфейса создаваемого объекта, пусть подклассы решить , какой класс инстанцировать завод, шаблон завод , чтобы сделать процесс создания задержки к подклассу.

Главным образом решить: Основная проблема опций интерфейса.

Когда использовать: когда мы в явном виде создавать различные экземпляры в различных условиях плана.

Как исправить: пусть подклассы реализовать интерфейс фабрики, это абстрактный продукт возвращается.

Код ключа: процесс создания выполнен в его подклассов.

Примеры применения: 1, вам нужен автомобиль, вы можете забрать из внутри завода непосредственно, без трубы автомобиль , как это сделать, а также реализации в салоне автомобиля.2, Hibernate обмена базами данных, просто изменив диалекте и вождение может быть.

Преимущества: 1, вызывающий абонент хотел создать объект, просто знать его имя на нем.2, высокая масштабируемость, если вы хотите добавить продукт, до тех пор, как расширение класса фабрики может быть. 3, защитная оболочка жизненного цикла продукции, вызывающий только касается интерфейса продукта.

Недостатки: каждое увеличение продукта, нам нужно добавить классы и объекты для достижения конкретной фабрики, поэтому число классов в системе увеличивается в геометрической прогрессии, в определенной степени, увеличилась сложность системы, но и увеличивает удельную систему класса зависимость.Это не очень хорошая вещь.

Сценарии использования: 1, Logger: Записи могут быть записаны на локальный жесткий диск, случае системы, удаленный сервер, пользователь может выбрать для входа куда - нибудь.2, доступ к базе данных, когда пользователь не знает, какой конечной системы использует базу данных, и база данных может измениться. 3, разработать основу для подключения к серверу, вам нужны три соглашения, "POP3", "IMAP", "HTTP", могут ли эти три как категории продукта, для достижения общего интерфейса.

Примечание: В классе режиме создания, где это необходимо для создания сложных объектов, вы можете использовать шаблон метод фабрики.Единственное, что следует отметить, что место для сложных объектов, используя шаблон фабрики и простых объектов, в частности, должны быть завершены только новые объекты, созданные без использования модели фабрики. Если вы используете шаблон фабрики, необходимо ввести класс фабрики, это увеличит сложность системы.

реализация

Мы создадим интерфейс класса сущность и интерфейсShapeреализацииShape.Следующим шагом является определение заводских классовShapeFactory.

FactoryPatternDemo,наше демо , чтобы получить класс использоватьShapeFactoryобъектShape.Он будет передавать информацию(КРУГ/ RECTANGLE / квадратное) кShapeFactory,он должен получить тип объекта.

Фабрика модели UML диаграмма

Шаг 1

Создайте интерфейс.

Shape.java

Открытый интерфейс Shape {
   недействительным ничья ();
}

Шаг 2

Создать класс сущностей, который реализует интерфейс.

Rectangle.java

Открытый класс Прямоугольник реализует Shape {

   @Override
   общественного недействительными ничья () {
      ( "Метод Внутри Прямоугольник :: ничья ().") System.out.println;
   }
}

Square.java

Открытый класс Square реализует Shape {

   @Override
   общественного недействительными ничья () {
      ( "Метод Внутри площади :: ничья ().") System.out.println;
   }
}

Circle.java

Открытый класс Circle реализует Shape {

   @Override
   общественного недействительными ничья () {
      ( "Метод Внутри круга :: ничья ().") System.out.println;
   }
}

Шаг 3

Создание завода по производству классов объекта сущностей на основе данной информации.

ShapeFactory.java

Открытый класс ShapeFactory {
	
   // Используем getShape метод, чтобы получить объект формы типа общественного Shape getShape (String shapeType) {
      если (shapeType == NULL) {
         возвращать нуль;
      }		
      если (shapeType.equalsIgnoreCase ( "КРУГ")) {
         вернуть новый круг ();
      } Иначе, если (shapeType.equalsIgnoreCase ( "Прямоугольник")) {
         вернуть новый прямоугольник ();
      } Иначе, если (shapeType.equalsIgnoreCase ( "КВАДРАТ")) {
         вернуть новый квадрат ();
      }
      возвращать нуль;
   }
}

Шаг 4

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

FactoryPatternDemo.java

Открытый класс FactoryPatternDemo {

   государственной статической силы основных (String []) {агдз
      ShapeFactory ShapeFactory = новый ShapeFactory ();

      // Получить объект Circle, и вызвать его метод рисования Shape shape1 = shapeFactory.getShape ( "КРУГ");

      // Вызываем метод рисования из shape1.draw Circle ();

      // Получить объект Rectangle, и вызвать его метод рисования Shape shape2 = shapeFactory.getShape ( "Прямоугольник");

      // Вызываем метод рисования из shape2.draw прямоугольника ();

      // Получить объект площади, и вызвать его метод рисования Shape shape3 = shapeFactory.getShape ( "КВАДРАТ");

      // Вызываем метод рисования площади shape3.draw ();
   }
}

Шаг 5

Проверьте выход.

Внутри круга :: ничья () метод.
Внутри прямоугольника :: ничья () метод.
Внутри площади :: ничья () метод.