Паттерн 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: