您的位置:首页 > 编程语言 > Java开发

详解设计模式——抽象工厂模式

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)。
适用场景:
一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 设计模式