Паттерн Factory

Паттерн FactoryFactory является одним из наиболее часто используемых шаблона проектирования в Java. Этот тип шаблона проектирования подпадает под созидательный шаблон, как эта модель обеспечивает один из лучших способов создать объект. В шаблон фабрики, мы создаем объект, не подвергая логику создания клиенту и относятся к вновь созданный объект, используя общий интерфейс.
Factory является одним из наиболее часто используемых шаблона проектирования в Java. Этот тип шаблона проектирования подпадает под созидательный шаблон, как эта модель обеспечивает один из лучших способов создать объект. В шаблон фабрики, мы создаем объект, не подвергая логику создания клиенту и относятся к вновь созданный объект, используя общий интерфейс.Мы создадим реализацию на примеры фабрики Car. Для начала мы создадим enum CarType
 public enum CarType { 
   SMALL, SEDAN, LUXURY; SMALL, SEDAN, LUXURY;
}
}

Дальше мы создадим класс Car, который будет зависить от CarType

public abstract class Car { 
 private CarType model; 
 
 public Car(CarType model){
  this.model=model; 
 } 


 public CarType getModel() {
  return model; 
 }  


 public void setModel(CarType model) { 
  this.model = model;
 }
}

Теперль для каждого CarType у нас будет отдельный класс

LuxuryCar

 public class LuxuryCar extends Car {
 
 public LuxuryCar() {
  super(CarType.LUXURY);
  start();
 } 


 private void start(){ 
  System.out.println("start work luxury");
 }

SedanCar

public class SedanCar extends Car {
 
 public SedanCar() {
  super(CarType.SEDAN);
  start();
 } 


 private void start(){ 
  System.out.println("start work sedan");
 }
}

SmallCar

public class SmallCar extends Car {
 
 public SmallCar() {
  super(CarType.SMALL);
  start();
 } 


 private void start(){ 
  System.out.println("start work small");
 }
}

Ну и теперь сама Factory

public class CarFactory {
 
 public static Car build(CarType model) {
  Car car = null;
  switch (model) {
   case SMALL:
      car = new SmallCar();
      break;
   } 
   
   case SEDAN:
      car = new SedanCar();
      break;
   } 


   case LUXURY:
      car = new LuxuryCar();
      break;
   } 
   
   default:
      break;
   } 
  
  return car;
 }
}

Ну создаем класс для демонстрации работы Factory

 public class TestFactory {
 
 public static void main(String[] args){
  System.out.println(CarFactory.build(CarType.SMALL));
  System.out.println(CarFactory.build(CarType.SEDAN));
  System.out.println(CarFactory.build(CarType.LUXURY));
 }

Вся реализация на https://github.com/Man4ester

Please follow and like us:

Leave a Comment