java设计模式(二)---抽象工厂模式

1.抽象工厂模式的定义

为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定对应的具体类。抽象工厂模式与工厂方法模式最大的区别就是抽象工厂中每个工厂可以创建多个种类的产品。

2.抽象工厂模式的适用范围

一个系统不应当依赖产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的,这个系统有多于一个产品族,而系统只消费其中某一种产品族,同属于同一产品族的产品是在一起使用,这一约束是必须的。
上面的定义理解起来好麻烦,转换成一个比较好理解的语境吧。
还是以手机为例,假设生产手机需要一个软件系统和芯片,但是软件系统分为安卓,苹果,微软,而芯片又有两核,四核等等。但是每一个型号的手机系统和芯片都是固定的。所以可以建一个手机类型的工厂,里面负责创建软件系统的类和芯片类,没多一款手机,就新建一个手机类型工厂。方便扩展,但是缺点也显而易见,就是如果我要给所有的手机加主板,那么之前所有的手机类型工厂都要修改,所以适用于稳定不变的产品集合

3.代码实现

新建手机需要的基本零件抽象接口
java设计模式(二)---抽象工厂模式
具体系统实现
java设计模式(二)---抽象工厂模式
型号工厂实现
java设计模式(二)---抽象工厂模式
客户端调用例子
java设计模式(二)---抽象工厂模式

使用的环境相对苛刻一点,但是如果条件满足,扩展还是杠杠的,呵呵