简单工厂模式,策略模式
策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。
简单工厂模式是创建的对象,且由该对象调用其内部的指定算法,主要是针对的对象之间的行为差异,单独封装
策略模式是针对的对象内部行为的算法,可以看作是一个集合,是允许多个策略实体进行叠加的。但工厂模式就不成。
这是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注册。