与策略模式工厂工作方式之间的差
2015-09-10 10:33
169 查看
最近阅读《大话设计模式》,其中,在第一,二章将导致“出厂模式”随着“策略模式”两种设计模式。不过,可能是因为我第一次阅读和学习设计模式的知识,这两种设计模式实现了困惑,有点晕。解他们之间的差别,在重复看了书中的样例跟上网查阅了很多前辈门关于这两种模式的文章以及博客之后,最终有了那么一丝丝的感觉。
主要差异:
1、作用
工厂模式基本的用途是创建对象,依据在client传入一个数据,在工厂类中创建对应的对象,然后返回给client,它使对象的创建独立于使用对象的客户。它属于创建型模型;
策略模式主要用于选择策略方法,在client中依据你所选择的行为或者策略创建一个对象。
策略模式就是为了解决策略的切换和扩展。它定义了策略族,并将它们封装起来。策略模式将策略的变换独立于使用策略的客户,它属于行为型模型;
2、关注点
工厂模式关注的是对象的创建
策略模式关注的是行为的封装
另外在这里引用两个我在CSDN的帖子里面看到觉得比較能让我找到感觉的样例,在此很感觉写出这个样例的大神。
一、
女人有非常多种。基本都会生孩子。(不要在意样例本身不雅,注意体会其含义)
1、找个会生孩子的身材好的女人。(怎样找的逻辑就交给女人工厂了,client仅仅要得到女人就能够了)。
2、找个身材好的女人代孕生个孩子,当然到最后仅仅要孩子不要女人。(怎样在多种女人中找个身材好的女人代孕生孩子是策略类的职责,最后策略类仅仅要把孩子交给client就可以)。
二、
工厂模式:依据你给出的目的来生产不同用途的斧子。比如要砍人,那么工厂生产砍人斧子,要伐木就生产伐木斧子。即依据你给出一些属性来生产不同行为的一类对象返回给你。关注对象创建
策略模式:用工厂生产的斧子来做相应的事情,比如用砍人的斧子来砍人,用伐木的斧子来伐木。
是基于你得到相应的对象运行适当的方法。
选择关注的行为
主要差异:
1、作用
工厂模式基本的用途是创建对象,依据在client传入一个数据,在工厂类中创建对应的对象,然后返回给client,它使对象的创建独立于使用对象的客户。它属于创建型模型;
策略模式主要用于选择策略方法,在client中依据你所选择的行为或者策略创建一个对象。
策略模式就是为了解决策略的切换和扩展。它定义了策略族,并将它们封装起来。策略模式将策略的变换独立于使用策略的客户,它属于行为型模型;
2、关注点
工厂模式关注的是对象的创建
策略模式关注的是行为的封装
另外在这里引用两个我在CSDN的帖子里面看到觉得比較能让我找到感觉的样例,在此很感觉写出这个样例的大神。
一、
女人有非常多种。基本都会生孩子。(不要在意样例本身不雅,注意体会其含义)
1、找个会生孩子的身材好的女人。(怎样找的逻辑就交给女人工厂了,client仅仅要得到女人就能够了)。
2、找个身材好的女人代孕生个孩子,当然到最后仅仅要孩子不要女人。(怎样在多种女人中找个身材好的女人代孕生孩子是策略类的职责,最后策略类仅仅要把孩子交给client就可以)。
二、
工厂模式:依据你给出的目的来生产不同用途的斧子。比如要砍人,那么工厂生产砍人斧子,要伐木就生产伐木斧子。即依据你给出一些属性来生产不同行为的一类对象返回给你。关注对象创建
策略模式:用工厂生产的斧子来做相应的事情,比如用砍人的斧子来砍人,用伐木的斧子来伐木。
是基于你得到相应的对象运行适当的方法。
选择关注的行为
相关文章推荐
- Android音频录制--AudioRecord
- 单链表
- 程序员如何持续提升自己的开发技能
- http: get and response格式
- Linux系统邮件查看及清空
- Java变量参数
- String reduction (poj 3401
- HashSet
- Bash shell常用技巧
- JavaScript prototype实例
- 浅析C++中的static
- linux kill 关闭进程命令
- CentOS修改系统时间
- hdu 1025 Constructing Roads In JGShining's Kingdom 最长上升序列nlogn
- mina的HTTP性能测试
- 论volatile
- 浅析C++中的static
- hdu 1025 Constructing Roads In JGShining's Kingdom 最长上升序列nlogn
- linux sock_raw原始套接字
- 如何创建phpinfo查看php信息?