`
85977328
  • 浏览: 1872531 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

抽象工厂

阅读更多
1)使用目的:
这个系统中,有多于一个的产品族,而系统只消费其中某一产品族,使系统不依赖于实现。
2)起源:
不同操作系统的视窗构件
3)说明:
抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象.
4)区别:
抽象工厂模式与工厂方法模式的最大区别在于,
工厂方法模式针对的是一个产品等级结构;
而抽象工厂模式则需要面对多个产品等级结构
总结:重点在于区分产品族和等级结构。
5)例子
汽车:奔驰,宝马,别克
计算机:dell,联想,thinkpad,mac
水果:热带水果,大棚水果
数据库的jdbc:oracle,mysql,sql server,db2
6)代码
接口
汽车工厂:CarFactory,包含下面的4个抽象部件
车身:Body
车灯:Light
发动机:Engine
轮胎:Wheel
实现类:
各种汽车工厂:BenzFactory,BmwFactory,HondaFactory,这3个工厂,分别要用后缀为1,2,3的部件来制造汽车。
车身:Body1,Body2,Body3
车灯:Light1,Light2,Light3
发动机:Engine1,Engine2,Engine3
轮胎:Wheel1,Wheel2,Wheel3
调用
CarFactory factory = new BenzFactory();//只需要此处工厂更换,下面的代码不需要改动
factory.body().name();
factory.wheel().name();
factory.engine().name();
factory.light().name();
7)总结
拿汽车工厂这个例子说,工厂方法,一个工厂,只能造一个系列产品。比如,他只能造轮子,包括轮子1,轮子2,轮子3,他不能造出“汽车”。抽象工厂呢,可以造出汽车,他只需要系列产品中的一个产品(产品族)。通过使用工厂的工厂,可以再用一个简单工厂模式,把汽车的3个工厂:宝马,奔驰,本田3个汽车工厂进行封装,达到系统完美性。有问题请大家留言,我会随时解答^-^
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics