抽象工厂模式Abstract Factory
创建一组相关或相互依赖的对象
结构与工厂模式类似,只是产品变成类多个抽象产品
实例
产品
共两个产品等级结构
Screen结构
public interface Screen {
void display();
}
public class MacScreen implements Screen {
@Override
public void display() {
System.out.println("苹果界面");
}
}
public class WindowsScreen implements Screen{
@Override
public void display() {
System.out.println("Windows界面");
}
}
Operate结构
public interface Operate {
void Use();
}
public class MacOperate implements Operate {
@Override
public void Use() {
System.out.println("使用苹果操作系统");
}
}
public class WindowsOperate implements Operate{
@Override
public void Use() {
System.out.println("使用Windows操作系统");
}
}
工厂
抽象工厂
public interface IFactory {
Screen productScreen();
Operate productOperate();
}
实例工厂:创建Windows族
public class WindowsFactory implements IFactory{
@Override
public Screen productScreen() {
return new WindowsScreen();
}
@Override
public Operate productOperate() {
return new WindowsOperate();
}
}
实例工厂:创建Mac族
public class WindowsFactory implements IFactory{
@Override
public Screen productScreen() {
return new WindowsScreen();
}
@Override
public Operate productOperate() {
return new WindowsOperate();
}
}
工厂模式总结
使一个类的实例化延迟到子类,为了生产一个实体类
产品等级结构:产品的继承结构,电视机与具体品牌电视机构成一个产品等级结构
产品族,由同一工厂生产的,位于不同产品等级结构的一组产品,同组产品可以是没有任何关系的对象,如同一品牌各种的电器
工厂模式
一个产品等级结构(最多一个抽象产品->产生多个具体产品)
定义一个用于创建对象的接口,让子类决定实例化哪一个类
抽象工厂模式
多个产品等级结构(多个抽象产品->每个抽象产品都可产生多个具体产品)
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体
给客户端提供一个统一接口,可以创建多个复杂产品族中的产品对象
系统中有多于一个的产品族,而每次只使用其中某一产品族,属于同一个产品族的产品将在一起使用,设计时要体现出这种约束,创建工厂实现时要把这些放在一起使用