zoukankan      html  css  js  c++  java
  • 与策略模式工厂工作方式之间的差

            最近阅读《大话设计模式》,其中,在第一,二章将导致“出厂模式”随着“策略模式”两种设计模式。不过,可能是因为我第一次阅读和学习设计模式的知识,这两种设计模式实现了困惑,有点晕。解他们之间的差别,在重复看了书中的样例跟上网查阅了很多前辈门关于这两种模式的文章以及博客之后,最终有了那么一丝丝的感觉。

            主要差异:

            1、作用

             工厂模式基本的用途是创建对象,依据在client传入一个数据,在工厂类中创建对应的对象,然后返回给client,它使对象的创建独立于使用对象的客户。它属于创建型模型;

             策略模式主要用于选择策略方法,在client中依据你所选择的行为或者策略创建一个对象。

    策略模式就是为了解决策略的切换和扩展。它定义了策略族,并将它们封装起来。策略模式将策略的变换独立于使用策略的客户,它属于行为型模型;

            2、关注点

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

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


           另外在这里引用两个我在CSDN的帖子里面看到觉得比較能让我找到感觉的样例,在此很感觉写出这个样例的大神。

           一、

           女人有非常多种。基本都会生孩子。(不要在意样例本身不雅,注意体会其含义)
           1、找个会生孩子的身材好的女人。(怎样找的逻辑就交给女人工厂了,client仅仅要得到女人就能够了)。
           2、找个身材好的女人代孕生个孩子,当然到最后仅仅要孩子不要女人。(怎样在多种女人中找个身材好的女人代孕生孩子是策略类的职责,最后策略类仅仅要把孩子交给client就可以)。

          二、

          工厂模式:依据你给出的目的来生产不同用途的斧子。比如要砍人,那么工厂生产砍人斧子,要伐木就生产伐木斧子。即依据你给出一些属性来生产不同行为的一类对象返回给你。关注对象创建
          策略模式:用工厂生产的斧子来做相应的事情,比如用砍人的斧子来砍人,用伐木的斧子来伐木。

    是基于你得到相应的对象运行适当的方法。

    选择关注的行为

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Leetcode Reverse Words in a String
    topcoder SRM 619 DIV2 GoodCompanyDivTwo
    topcoder SRM 618 DIV2 MovingRooksDiv2
    topcoder SRM 618 DIV2 WritingWords
    topcoder SRM 618 DIV2 LongWordsDiv2
    Zepto Code Rush 2014 A. Feed with Candy
    Zepto Code Rush 2014 B
    Codeforces Round #245 (Div. 2) B
    Codeforces Round #245 (Div. 2) A
    Codeforces Round #247 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4797032.html
Copyright © 2011-2022 走看看