详解设计模式——抽象工厂模式
2017-05-25 21:28
274 查看
抽象工厂模式(Abstract Factory)
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。来看下抽象工厂模式的类图:
上节学习了工厂模式,类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。下面通过一个例子来深入理解。
通过一个例子,来加深对抽象工厂的理解。
1.
//CPU工厂接口
2.
publicinterfaceCPUFactory{
3.
publicvoid createCPU();
4.
}
1.
//IntelCPU工厂
2.
publicclassIntelCPUimplementsCPUFactory{
3.
@Override
4.
publicvoid createCPU(){
5.
System.out.println("Intel
CPU");
6.
}
7.
}
1.
//AMDCPU工厂
2.
publicclass AMDCPU
implementsCPUFactory{
3.
@Override
4.
publicvoid createCPU(){
5.
System.out.println("AMD
CPU");
6.
}
7.
}
1.
//创建抽象工厂类接口
2.
publicinterfaceProvider{
3.
publicCPUFactory createCPUFactory();
4.
}
1.
publicclassInterCPUFactoryimplementsProvider{
2.
@Override
3.
publicCPUFactory createCPUFactory(){
4.
returnnewInterCPU();
5.
}
6.
}
1.
publicclassAMDCPUFactoryimplementsProvider{
2.
@Override
3.
publicCPUFactory createCPUFactory(){
4.
returnnew AMDCPU();
5.
}
6.
}
1.
publicstaticvoid main(String[]
args){
2.
//创建一个生产CPU工厂的工厂
3.
Provider cpufactory
=newInterCPUFactory();
4.
//通过CPU工厂的工厂创建一个IntelCPU工厂
5.
CPUFactory intelcpu
= cpufactory.createCPUFactory();
6.
//IntelCPU工厂生产intelCPU
7.
intelcpu.createCPU();
8.
}
抽象工厂的优点:
抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联(例如不同厂商生产CPU)。
适用场景:
一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。来看下抽象工厂模式的类图:
上节学习了工厂模式,类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。下面通过一个例子来深入理解。
通过一个例子,来加深对抽象工厂的理解。
1.
//CPU工厂接口
2.
publicinterfaceCPUFactory{
3.
publicvoid createCPU();
4.
}
1.
//IntelCPU工厂
2.
publicclassIntelCPUimplementsCPUFactory{
3.
@Override
4.
publicvoid createCPU(){
5.
System.out.println("Intel
CPU");
6.
}
7.
}
1.
//AMDCPU工厂
2.
publicclass AMDCPU
implementsCPUFactory{
3.
@Override
4.
publicvoid createCPU(){
5.
System.out.println("AMD
CPU");
6.
}
7.
}
1.
//创建抽象工厂类接口
2.
publicinterfaceProvider{
3.
publicCPUFactory createCPUFactory();
4.
}
1.
publicclassInterCPUFactoryimplementsProvider{
2.
@Override
3.
publicCPUFactory createCPUFactory(){
4.
returnnewInterCPU();
5.
}
6.
}
1.
publicclassAMDCPUFactoryimplementsProvider{
2.
@Override
3.
publicCPUFactory createCPUFactory(){
4.
returnnew AMDCPU();
5.
}
6.
}
1.
publicstaticvoid main(String[]
args){
2.
//创建一个生产CPU工厂的工厂
3.
Provider cpufactory
=newInterCPUFactory();
4.
//通过CPU工厂的工厂创建一个IntelCPU工厂
5.
CPUFactory intelcpu
= cpufactory.createCPUFactory();
6.
//IntelCPU工厂生产intelCPU
7.
intelcpu.createCPU();
8.
}
抽象工厂的优点:
抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联(例如不同厂商生产CPU)。
适用场景:
一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。
相关文章推荐
- Java研究之学习设计模式-抽象工厂模式详解
- Java 设计模式之抽象工厂模式的详解(创建模式)
- 走穿java23种设计模式-3抽象工厂模式详解
- PHP实现设计模式中的抽象工厂模式详解
- 设计模式(一)简单工厂模式工厂模式 抽象工厂模式详解
- 详解iOS应用开发中使用设计模式中的抽象工厂模式
- 设计模式之禅—23种设计模式详解_3 抽象工厂模式
- 设计模式——抽象工厂模式详解
- 设计模式详解之抽象工厂模式
- Java 23种设计模式之抽象工厂模式详解
- 设计模式-工厂模式详解(非抽象工厂模式)
- 设计模式-抽象工厂模式详解
- PHP实现设计模式中的抽象工厂模式详解
- 设计模式(3)-抽象工厂模式详解(易懂)
- [设计模式] - No.1 详解简单工厂模式、工厂模式和抽象工厂模式
- 设计模式——抽象工厂模式详解
- 详解C#的设计模式编程之抽象工厂模式的应用
- 设计模式 - 抽象工厂模式(abstract factory pattern) 详解
- Java 可复用的面向对象的设计模式之 工厂模式Factory详解 :简单工厂模式 工厂方法模式 抽象工厂模式
- [置顶] 【设计模式】之抽象工厂模式详解与应用(三)