设计模式之禅—23种设计模式详解_3 抽象工厂模式
2017-09-12 15:50
585 查看
抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。再来看看工厂方法模式与抽象工厂模式对比:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/31/a2fdb9432d11b9bc7fefc620ff75f977)
示例代码:
public class AbstractFactory { public static void main(String args[]){ IFactory bigfactory = new BigFactory(); IFactory smallfactory = new BigFactory(); bigfactory.producePhone().run(); bigfactory.produceHeadset().play(); smallfactory.producePhone().run(); smallfactory.produceHeadset().play(); } } //抽象产品*2 interface Headset{ void play(); } //抽象产品 interface MeizuPhone{ void run(); } //具体产品*2*2 class PRO5 implements MeizuPhone{ @Override public void run() { System.out.println("我是一台PRO5"); } } class MX5 implements MeizuPhone{ @Override public void run() { System.out.println("我是一台MX5"); } } class EP21 implements Headset{ @Override public void play() { System.out.println("我是一副EP21"); } } class EP30 implements Headset{ @Override public void play() { System.out.println("我是一台EP30"); } } //抽象工厂 interface IFactory{ MeizuPhone producePhone(); Headset produceHeadset(); } //具体工厂*2 class BigFactory implements IFactory{ @Override public MeizuPhone producePhone() { return new PRO5(); } @Override public Headset produceHeadset() { return new EP30(); } } //具体工厂*2 class SmallFactory implements IFactory{ @Override public MeizuPhone producePhone() { return new MX5(); } @Override public Headset produceHeadset() { return new EP21(); } }
相关文章推荐
- 设计模式之禅—23种设计模式详解_2 工厂模式
- 设计模式之禅—23种设计模式详解_1 单例模式
- Java 23种设计模式之抽象工厂模式详解
- 走穿java23种设计模式-3抽象工厂模式详解
- 设计模式之禅—23种设计模式详解_0 概述
- Java开发中的23种设计模式详解
- 深入浅出Java开发中的23种设计模式详解
- Java开发中的23种设计模式详解
- Java开发中的23种设计模式详解
- Java开发中的23种设计模式详解
- 23种设计模式(3):抽象工厂模式
- 23种设计模式(3):抽象工厂模式
- java23种设计模式详解
- Java开发中的23种设计模式详解
- 设计模式——抽象工厂模式详解
- Java开发中的23种设计模式详解(转)
- 23种设计模式——抽象工厂模式
- Java开发中的23种设计模式详解
- GOF---Java开发中的23种设计模式详解
- Java开发中的23种设计模式详解(转)