设计模式总结(一)

来源:互联网 发布:欧德堡牛奶 知乎 编辑:程序博客网 时间:2024/04/30 12:20

1.      简单工厂模式

简单工厂模式通过抽象一个运算类使得继承于他的具体抽象类具有自己的属性和方法,而究竟使用哪种抽象类是通过简单工厂类中的判断语句来确定的。其具体过程为首先实例化一个简单工厂类,根据输入的参数来确定实例化哪种具体运算类,在由实例化的具体运算类调用自身的运算方法实现两个数的运算。

2.      策略模式

策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。

我感觉策略模式和简单工厂模式有很大的相同之处。策略模式首先抽象出一个策略类,然后根据这个策略类派生多种不同的具体策略类,每种具体策略类有自己的处理方法,而Context类的作用是通过传入参数的不同决定采用哪种策略。实际上,这里的抽象策略类就相当于简单工厂模式中的抽象运算类,而简单工厂模式中的具体运算类就相当于策略模式中的具体策略类。简单工厂类相当于Context类,只不过在Context中传入的参数是具体的策略类,具体的判断实例化操作放在了客户端进行,而简单工厂中的判断实例化放在了简单工厂类中进行其客户端只需要给出判断条件。如果将策略模式和简单工厂模式相结合也可以把具体的判断实例化操作放在Context类中进行。

3.      代理模式

代理模式为其他对象提供一种代理以控制对这个对象的访问。

首先定义一个接口在接口中定义真实类和代理类所具有的一系列方法并在真实类和代理类中给出具体的实现。真实类和代理类的实现代码是不同的。真实类代码实现该类想要实现的功能,代理类代码实现的是对真实类中该方法的调用。即通过代理类作为中间人来解除真实类和与真实类相互作用的类(图中未画出)之间的耦合。

4.      原型模式

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新对象。其实就是从一个对象在创建另一个可制定的对象,而且不需要知道任何创建的细节。

关键之处在与在原型类中声明一个克隆自身的接口。在具体原型类中给出克隆函数实现。在具体原型类的克隆函数的函数体中直接调用C#中由系统给出克隆函数,其格式为(object)对象.MemberwiseClone()即可。

具体原型类中 定义克隆函数Clone():

Public Object Clone()

{

           Return  (Object)this.MemberwiseClone();

}

5.      模板方法模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可冲定义该算法的某些特定步骤。

当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过用模板方法模式将相同的代码部分提炼出来使得继承于该类的子类共享这些相同代码来达到代码复用的目的,在子类中给出的仅仅是子类中不相同的部分。

原创粉丝点击