将一组相似产品的创建过程放到一个类里来提供,这个类的设计即为工厂模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
简单工厂模式
一个抽象的接口,多个抽象接口的实现类,一个工厂类用来实例化抽象的接口。
|
|
简单工厂的测试如下:12345public static void main(String[] args) { PhoneFactory phoneFactory = new PhoneFactory(); Phone phone = phoneFactory.makePhone("Iphone"); MiPhone miPhone = (MiPhone) phoneFactory.makePhone("MiPhone"); }
工厂方法模式
和简单工厂模式中工厂负责生产所有产品相比,工厂方法模式将生成具体产品的任务分发给具体的产品工厂。
|
|
测试类如下:
|
|
抽象工厂模式
再工厂模式的基础上,如果需要另外生产一种产品,只需要在AbstractFactory的接口里新定义一个产品接口,然后在实现类里添加新实现即可,不需要额外重复的再重写一套工厂模式,这就是抽象工厂模式。
|
|
测试类及结果如下:
public static void main(String[] args) {
AbstractFactory miFactory = new MiPhoneFactory();
AbstractFactory iphoneFactory = new IphoneFactory();
miFactory.makePhone();
iphoneFactory.makePhone();
miFactory.makePC();
iphoneFactory.makePC();
}
开始生产MiPhone
开始生产Iphone
开始生产MiPc
开始生产Ipc