0918 图解设计模式 简单工厂/工厂模式/抽象工厂/策略

工厂模式为了创建具有相似行为和属性的对象

想了一个很贴近生产,容易理解的例子,比如我要实现一个接收器receiver

有相同的行为receive(),但是具体实现不同,分为UDP和TCP两种

简单工厂/工厂模式

简单工厂可以算是工厂模式的特例,比较懒惰,要改原有代码的‘比较懒的工厂模式’,两者区别如下图所示

抽象工厂

上个例子中只有接受器,构成一个两个产品的产品树,但很多时候产品树不止一个

如相应的有发送器,或者还有前处理器,后处理器,每个都分为UDP和TCP两类,那么 TCP这一线构成了一个产品族

这时就要使用抽象工厂来组合,具体实现可以是每个简单工厂的组合,或者工厂模式的组合

策略模式

网上有人将策略模式和工厂模式作为对比

http://www.cnblogs.com/zhangchenliang/p/3700820.html

工厂模式是工厂负责创建对象,而策略模式则是用户提供具体对象,执行对应的方法

我觉得并不是太贴切,

策略模式是不同对象提供同一方法接口的不同实现

而工厂方法我觉得可以理解为是创造Bean的策略模式,或者是面向于createInstance创建实例这一通用方法的策略模式

策略模式是同一接口,不同对象去做不同方法

工厂模式是同一创建对象接口,根据请求不同创建不同的对象

所以一般先通过工厂模式创建对应对象,而之后执行对象对应的方法就是策略模式,而这样一组合就是模板模式

设计模式本来就是你中有我,我中有你,没法单分开,只不过不同侧重时,某一种显现的比较强

这是三爷的一些个人思考,欢迎大家交流补充

转载请复制链接,谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值