0918 图解设计模式 简单工厂/工厂模式/抽象工厂/策略
工厂模式为了创建具有相似行为和属性的对象
想了一个很贴近生产,容易理解的例子,比如我要实现一个接收器receiver
有相同的行为receive(),但是具体实现不同,分为UDP和TCP两种
简单工厂/工厂模式
简单工厂可以算是工厂模式的特例,比较懒惰,要改原有代码的‘比较懒的工厂模式’,两者区别如下图所示
抽象工厂
上个例子中只有接受器,构成一个两个产品的产品树,但很多时候产品树不止一个
如相应的有发送器,或者还有前处理器,后处理器,每个都分为UDP和TCP两类,那么 TCP这一线构成了一个产品族
这时就要使用抽象工厂来组合,具体实现可以是每个简单工厂的组合,或者工厂模式的组合
策略模式
网上有人将策略模式和工厂模式作为对比
http://www.cnblogs.com/zhangchenliang/p/3700820.html
工厂模式是工厂负责创建对象,而策略模式则是用户提供具体对象,执行对应的方法
我觉得并不是太贴切,
策略模式是不同对象提供同一方法接口的不同实现
而工厂方法我觉得可以理解为是创造Bean的策略模式,或者是面向于createInstance创建实例这一通用方法的策略模式
策略模式是同一接口,不同对象去做不同方法;
工厂模式是同一创建对象接口,根据请求不同创建不同的对象,
所以一般先通过工厂模式创建对应对象,而之后执行对象对应的方法就是策略模式,而这样一组合就是模板模式
设计模式本来就是你中有我,我中有你,没法单分开,只不过不同侧重时,某一种显现的比较强
这是三爷的一些个人思考,欢迎大家交流补充
转载请复制链接,谢谢大家