程序员人生 网站导航

工厂模式跟策略模式的区别

栏目:互联网时间:2014-11-12 08:54:31

        最近在浏览《大话设计模式》,其中在第12章就引出了“工厂模式”跟“策略模式”两种设计模式,但是可能由于我第1次浏览和学习有关设计模式的知识,对这两种设计模式的实现方式产生了混淆了,有点头晕,不怎样好理解他们之间的区分,在反复看了书中的例子跟上网查阅了许多先辈门关于这两种模式的文章和博客以后,终究有了那末1丝丝的感觉。

        主要差异:

        1、作用

         工厂模式主要的用处是创建对象,根据在客户端传入1个数据,在工厂类中创建相应的对象,然后返回给客户端,它使对象的创建独立于使用对象的客户,它属于创建型模型;

         策略模式主要用于选择策略方法,在客户端中根据你所选择的行动或策略创建1个对象。策略模式就是为了解决策略的切换和扩大,它定义了策略族,并将它们封装起来,策略模式将策略的变换独立于使用策略的客户,它属于行动型模型;

        2、关注点

        工厂模式关注的是对象的创建

        策略模式关注的是行动的封装


       另外在这里援用两个我在CSDN的帖子里面看到认为比较能让我找到感觉的例子,在此非常感觉写出这个例子的大神。

       1、

       女人有很多种,基本都会生孩子。(不要在乎例子本身不雅,注意体会其含义)
       1、找个会生孩子的身材好的女人。(如何找的逻辑就交给女人工厂了,客户端只要得到女人就能够了)。
       2、找个身材好的女人代孕生个孩子,固然到最后只要孩子不要女人。(如何在多种女人中找个身材好的女人代孕生孩子是策略类的职责,最后策略类只要把孩子交给客户端便可)。

      2、

      工厂模式:根据你给出的目的来生产不同用处的斧子,例如要砍人,那末工厂生产砍人斧子,要伐木就生产伐木斧子。即根据你给出1些属性来生产不同行动的1类对象返回给你。关注对象创建
      策略模式:用工厂生产的斧子来做对应的事情,例如用砍人的斧子来砍人,用伐木的斧子来伐木。即根据你给出对应的对象来履行对应的方法。关注行动的选择

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐