抽象工厂方法-《java与模式》

下面内容摘自《java与模式》
[img]http://dl.iteye.com/upload/attachment/493516/e9d6356f-5897-3981-a57d-42523a20136b.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/493544/3c22f5a7-18f6-348b-af72-85e03baacaf0.jpg[/img]

如果每个抽象产品都有多于一个的具体子类,那么抽象工厂就可以提供多个具体工厂角色,分泌对应于相应的具体产品角色,即每个具体工厂类负责创建抽象产品的某个具体子类的实例。
“抽象工厂”---“抽象”来自“抽象产品角色”,而“抽象工厂”就是抽象产品角色的工厂。

抽象工厂模式面对的问题是多个产品等级结构的系统设计的。

抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。
[img]http://dl.iteye.com/upload/attachment/493575/260ec01f-1b89-3fdd-9cf1-c98ec1356040.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/493577/f68e2f10-73c3-36fb-97e4-5b53a1740726.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/493579/658e8a60-2019-39ab-95c4-ef9beb3684c2.jpg[/img]
注意第二条,即系统只消费其中某一族的产品。抽象工厂模式的起源:

[img]http://dl.iteye.com/upload/attachment/493581/91348919-5ca7-3278-b620-638470e7f118.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/493583/2eaca841-d341-3ca9-8813-007a6a1c3134.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/493585/c6e675c6-a9e3-37ec-8596-e80a6f3d51dd.jpg[/img]

相关的模式
1:具体工厂类可以设计成单例类(单例模式)
2:抽象工厂类可以配备静态方法,以返还具体工厂的实例。具体地讲,抽象工厂角色可以配备一个静态方法,这个方法按照参数的值,返回所对应的具体该ing从的实例。静态方法返回的类型是抽象工厂类型,这样可以在多态性的保证之下,允许静态工厂方法自行决定哪一个具体工厂符合要求。
3:也可以为每一个具体工厂类配备一个静态方法,而其返回类型是该具体工厂类自己。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值