[设计模式系列]抽象工厂模式

 

抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。


设计简单工厂是一条主线一层:水果接口--水果实现;水果工厂(有一个方法以水果接口形式返回具体水果类)
设计工厂方法是两条主线二层:水果接口--水果实现;水果工厂接口(定义空方法返回水果接口)--工厂实现(生产具体水果,以水果接口形式返回具体水果类)。
设计抽象工厂是两条主线三层:水果接口--水果品种抽象类--具体水果类;水果工厂接口(定义空方法返回水果(苹果)接口)--(南方)水果工厂类(有相应方法,以水果接口形式返回具体南方苹果、南方李子...)


抽象工厂模式与前边两种设计模式的最大区别就是,他把具体的水果定义为抽象类。把水果再具体为南方水果,北方水果这样。先定义一个顶端水果工厂接口(里边写死只能够生产苹果、李子),再下一层次,定义,南方工程类、北方工程类(实现顶层接口)等等。
抽象工厂模式是相对于同一个产品族来说比较方便(就是苹果分为什么南方苹果,北方苹果,温室苹果;南方李子,北方李子,温室李子等等),但是如果要添加一个红枣(同样分南方、北方、温室三种)这种水果的话,就不得不修改最顶端的水果工厂接口,而且也修改下一层苹果抽象类,李子抽象类里边的方法。所以,给人的感觉就是,抽象工厂模式的层次比工厂方法更为多一种层次。除非很必要,抽象工厂模式还是少用为妙。因为当添加新的一种水果的话,要修改的地方很多,违背OCP(开闭原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值