Паттерн Factory

Паттерн Factory

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

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

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

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

Мы создадим реализацию на примеры фабрики Car. Для начала мы создадим enum CarType

  1.  public enum CarType { 
  2.    SMALL, SEDAN, LUXURY;
    SMALL, SEDAN, LUXURY;
    }

  3.  }
  4.   

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

  1.  public abstract class Car { 
  2.  private CarType model; 
  3.  
  4.  public Car(CarType model){
  5.   this.model=model; 
  6.  } 

  7.  public CarType getModel() {
  8.   return model; 
  9.  }  

  10.  public void setModel(CarType model) { 
  11.   this.model = model;
  12.  }
  13. }
  14.   

 

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

LuxuryCar

  1.  public class LuxuryCar extends Car {
  2.  
  3.  public LuxuryCar() {
  4.   super(CarType.LUXURY);
  5.   start();
  6.  } 

  7.  private void start(){ 
  8.   System.out.println("start work luxury");
  9.  }
  10. }

SedanCar

 

  1.  public class SedanCar extends Car {
  2.  
  3.  public SedanCar() {
  4.   super(CarType.SEDAN);
  5.   start();
  6.  } 

  7.  private void start(){ 
  8.   System.out.println("start work sedan");
  9.  }
  10. }
  11.  

SmallCar

  1.  public class SmallCar extends Car {
  2.  
  3.  public SmallCar() {
  4.   super(CarType.SMALL);
  5.   start();
  6.  } 

  7.  private void start(){ 
  8.   System.out.println("start work small");
  9.  }
  10. }
  11.  

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

 

  1. public class CarFactory {
  2.  
  3.  public static Car build(CarType model) {
  4.   Car car = null;
  5.   switch (model) {
  6.    case SMALL:
  7.       car = new SmallCar();
  8.       break;
  9.    } 
  10.    
  11.    case SEDAN:
  12.       car = new SedanCar();
  13.       break;
  14.    } 

  15.    case LUXURY:
  16.       car = new LuxuryCar();
  17.       break;
  18.    } 
  19.    
  20.    default:
  21.       break;
  22.    } 
  23.   
  24.   return car;
  25.  }
  26. }
  27.  

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

 

  1.  public class TestFactory {
  2.  
  3.  public static void main(String[] args){
  4.   System.out.println(CarFactory.build(CarType.SMALL));
  5.   System.out.println(CarFactory.build(CarType.SEDAN));
  6.   System.out.println(CarFactory.build(CarType.LUXURY));
  7.  }
  8.  

 

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

comments powered by Disqus

Интересное

Стив Джобс о Mac OS X:
«Я убежден в том, что половина того что отделяет успешных предпринимателей от неудачников — это настойчивость.».
Марк Эллиот Цукерберг:
«Люди всегда немного скептически относятся к чему-то быстрорастущему, но им нужно просто взглянуть на то, что делается.».
Марк Эллиот Цукерберг:
"Множество конфиденциальных вещей намного проще держать в централизованной системе."
Стив Джобс о операционной системе Google Android:
Мы не лезем в поиск, но они решили заняться телефонами. Не надо заблуждаться, они хотят уничтожить iPhone. Мы им не позволим.
Стив Джобс о Mac OS X:
«Мы сделали значки на экране такими красивыми, что вам захочется их лизнуть».


Курсы валют

bank-ua.com bank-ua.com bank-ua.com

Стоит взглянуть