简单工厂、工厂、抽象工厂

工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放到了一个具体类上.  

简单工厂模式

将产品抽象出一个接口,在工厂函数中使用 Switch-Case 判断生产哪个具体产品,并返回具体产品的父接口引用。

工厂模式

1 除将产品抽象出一个接口以便实现多态,还将不同的工厂进行细分,统一继承自一个接口,将简单工厂中的判断移至客户端。实现了 开-闭原则。
2 客户端若使用一个工厂对象生产多个产品,简单工厂需要修改每个生产函数的参数,工厂方法模式只需修改初始化语句。

抽象工厂模式

抽象工厂是面向多个平行等级结构的,其建立对象的原则是以簇(功能相似的对象)为单位划分需要建立的对象.

1 在工厂方法模式的基础上,抽象出多个系列产品,每个系列产品都具备统一的具体产品类型组成,所有系列中的每组类型对应一个具体工厂类。
2 在更改产品类型时,只需更改一次工厂初始化语句。
3 也可用简单工厂配合抽象工厂系列,以消减工厂类的代码量。

有一个比较好理解的例子,在这跟大家介绍下: 
  1.如果一个后花园只种蔬菜类,那么就用简单工厂就可以了. 
  2.如果后花园蔬菜品种繁多.得用工厂方法才可以,把共有的东西抽象出来. 
  3.如果要扩大后花园的规模,比如一个在北方,一个在南方,这样工厂方法就无法实现了,就应当用抽象工厂,把各种各样的植物,又组成一个后花园. 

1.简单工厂: 
 

心得:优点是只要实现共有的接口就可以实现不同车跑的方式.但缺点就是要判断哪一种车,造成要修改Driver 类
2.工厂方法: 
 

心得:优点是符合了开放-封闭原则(OCP),从整体上还看不出什么缺点.

3.抽象工厂: 

 

心得:抽象方法似乎达到了完美境界.把开奔驰的司机和开宝马的司机的公共方法抽象出来,并对不同的司机创建不同的类,到时候不管是开什么车的司机随你添加.它们唯一的共同点都是开车.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值