简单工厂模式,策略模式

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

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

这是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注册。

原文地址:https://www.cnblogs.com/zjypp/p/2319429.html