zoukankan      html  css  js  c++  java
  • 简单工厂模式,策略模式

    策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
    简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
    简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。

    简单工厂模式是创建的对象,且由该对象调用其内部的指定算法,主要是针对的对象之间的行为差异,单独封装
    策略模式是针对的对象内部行为的算法,可以看作是一个集合,是允许多个策略实体进行叠加的。但工厂模式就不成。

    这是csdn一些人的看法

    首先简单工厂模式,属于创建者模式,他是讲究类的创建的,策略模式输入行为模式,是说一个事情的多种实现算法的,算法不同。

    从代码层次来看:

    简单工厂模式,是在服务端创建类对象,客户端只是提供改对象的描述或者选择,然后让服务端创建。简单工厂模式有个工厂类,负责来生成对象。

    策略模式,是在客户端创建对象,然后让服务端去调用这个对象的方法或者算法。策略模式有个上下文类(Context),他用来得到客户端传递过来的对象实例,然后去调用这个对象的方法。

    不过现在有个新的方法,就是把简单工厂模式和策略模式结合在一起。对上下文类进行改造,Context类,举办factory类的特性,他只接收客户端传递来的关于对象的描述,然后在Context创建类对象,这样就解决了客户端创建类对象的问题,然后还是在Context调用对象的实例

    简单列子

    public class Context

    {

        ClassA a =null;

        public Context(string input)

        {

               switch(input)

               {//创建类的classa的实例}

        }

        public void MethodA()

         {//调用a的方法}

    }

     //附  从代码逻辑层次讲

    简单工厂模式需要客户端认识两个类

    抽象类 和工厂类,比如这样:

    AbstractClass ac = ClassFactory.createAbstractClass("....条件");

    ac.DoMethod();

    策略模式之需要客户端认识一个类 就是上下文类,比如

    ABContext con = new AbContext("条件");

    con.DoMethod();

    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    !!“理都懂”为什么“然并卵”?
    启明创投甘剑平:破解独角兽公司的基因密码
    任正非:华为3年前应该快垮了
    C语言 · 8皇后问题改编
    C语言 · 数的划分
    C语言 · 8皇后问题
    C语言 · 数字黑洞
    C语言 · FBI树
    C语言 · 超级玛丽
    C语言 · 数的划分
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319429.html
Copyright © 2011-2022 走看看