简言之,客户需要产品时找工厂要,而不是客户自己要产品。前者客户只需要 "向工厂申请产品"的接口,后者客户需要"申请产品1", "申请产品2"等多个接口。
工厂模式体现了程序设计中的:
不知名原则:
要素:具体工厂类,抽象产品类,具体产品1类,具体产品2类。
刹车
等虚函数;生产车辆
的方法,根据传入参数,决定生产的产品类型。客户使用时需要:
汽车工厂对象
;汽车工厂对象
调用 生产车辆
的方法 (传入参数为 福田
时,汽车工厂.生产车辆("福田")
);福田车对象
; 在"简单工厂模式"中,汽车工厂类
过于抽象,随着产品种类的增加,汽车工厂类
中的生产车辆
方法将变得十分臃肿。如果有 福田车工厂类
,广汽车工厂类
更好,这样一个工厂生产一种汽车,增加一种汽车就增加对应工厂生产它。于是改进为:
客户使用时需要:
汽车工厂类对象
初始化为福田车工厂
还是广汽车工厂
;福田车工厂对象
调用 生产车辆方法
;福田车对象
; 在"工厂方法模式"中,每增加一种具体产品,就增加一种具体工厂,开发成本大。但是抽象工厂模式不是为了解决这个问题滴(我是这么理解的,欢迎纠错)。比如 我想买 巧克力饼干
,希望有一个巧克力饼干工厂
,这个工厂同时依赖巧克力类
,饼干类
(前两种模式中工厂只依赖一种产品类,此处依赖多种产品类),提供生产巧克力
和生产饼干
的接口。
客户使用时需要:
巧克力饼干工厂对象
;生产巧克力
和生产饼干
的接口;巧克力对象
和饼干对象
;原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。