抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
先看一下工厂模式
1. 工厂模式
public class FactoryPattern {
public static void main(String[] args) {
Factory factory = new HuaWeiFactory();
Phone phone = factory.createPhone();
phone.print();
}
}
interface Phone {
void print();
}
class iPhone implements Phone {
@Override
public void print() {
System.out.print("iPhone");
}
}
class HuaWeiPhone implements Phone {
@Override
public void print() {
System.out.print("HuaWeiPhone");
}
}
interface Factory {
Phone createPhone();
}
class IPhoneFactory implements Factory {
@Override
public Phone createPhone() {
return new iPhone();
}
}
class HuaWeiFactory implements Factory {
@Override
public Phone createPhone() {
return new HuaWeiPhone();
}
}
复制代码
2. 抽象工厂模式
抽象工厂模式只是工厂模式的一个扩展,抽象工厂模式如果只有一个产品体系就会退化成工厂模式
public class AbstractFactoryPattern {
public static void main(String[] args) {
SuperFactory factory = new SuperFactory();
Phone phone = factory.createPhone("1");
phone.print();
}
}
interface Phone {
void print();
}
class iPhone implements Phone {
@Override
public void print() {
System.out.print("iPhone");
}
}
class HuaWeiPhone implements Phone {
@Override
public void print() {
System.out.print("HuaWeiPhone");
}
}
interface Mask {
void print();
}
class N95 implements Mask {
@Override
public void print() {
System.out.print("N95");
}
}
class KN95 implements Mask {
@Override
public void print() {
System.out.print("KN95");
}
}
interface AbstractFactory {
Phone createPhone(String param);
Mask createMask(String param);
}
class SuperFactory implements AbstractFactory {
@Override
public Phone createPhone(String param) {
return new iPhone();
}
@Override
public Mask createMask(String param) {
return new N95();
}
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END