抽象工厂
核心思想
- 把工厂抽象出来
- 把工厂类抽象出来
- 一个工厂对应一个工厂类
与工厂模式的区别
这两种设计模式主要的区别在于产品,工厂模式是用来创建同一个产品的不同类型的,但是抽象工厂模式是用来创建不同类的产品。
一般来说,产品种类单一,适合用工厂模式;如果有多个种类,各种类型时,通过抽象工厂模式来进行创建是很合适的。
实现
汽车(工厂类)接口:
/**
* @Author Mr.wei
* @Date 2019/7/11 9:51
* @Description:汽车接口
*/
public interface Car {
public void showFlag();
}
造车厂(工厂)接口:
/**
* @Author Mr.wei
* @Date 2019/7/11 9:50
* @Description:造车工厂接口
*/
public interface CarFactory {
public Car createCar();
}
汽车实现类:
/**
* @Author Mr.wei
* @Date 2019/7/11 9:52
* @Description:奔驰
*/
public class Benz implements Car {
@Override
public void showFlag() {
System.out.println("这是一辆奔驰");
}
}
/**
* @Author Mr.wei
* @Date 2019/7/11 9:53
* @Description:玛莎拉蒂
*/
public class Maserati implements Car {
@Override
public void showFlag() {
System.out.println("这是一辆玛莎拉蒂");
}
}
造车厂实现类:
/**
* @Author Mr.wei
* @Date 2019/7/11 9:53
* @Description:奔驰造车厂
*/
public class BenzFactory implements CarFactory {
@Override
public Car createCar() {
return new Benz();
}
}
/**
* @Author Mr.wei
* @Date 2019/7/11 9:54
* @Description:玛莎拉蒂造车厂
*/
public class MaseratiFactory implements CarFactory {
@Override
public Car createCar() {
return new Maserati();
}
}