设计模式概念

1. 简单工厂模式

概念:在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

2. 策略模式

例子:商城促销

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

解析:策略模式是一种定义一系列算法的方法,这些算法完成的是相同的工作,只是实现不同,它可以以相同的方式调用所有的散发, 减少了各种算法与使用算法累之间的耦合。

Strategy为context定义了一系列的可供重用的算法或行为。继承有助于吸取这些算法中的公共方法, 优点是减化了单元测试,可以通过自己的接口单独测试。

策略模式是用来封装算法的。

3. 单一职责原则

概念:就一个类而言, 他应该仅有一个引起它变化的原因

4. 开放-封闭原则

概念:软件实体(类,模块,函数等)应该可以扩展, 但是不可以修改。

对于扩展是开放, 对于更改是封闭的。使得产品稳定。

5. 依赖倒转原则(修电脑不能修收音机)

要针对接口编程,不要对实现编程。

A. 高层模块不应该依赖低层模块,两个都应该依赖抽象

B. 抽象不应该依赖细节, 细节应该依赖抽象。

6. 里氏代换原则

一个软件实习如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说, 在软件里, 把父类都替换成他的子类, 程序的行为没有变化。

概念:子类型必须能够替换掉他们的子类型。

7. 装饰器模式

(小菜扮靓)

概念:动态地给一个对象添加一些额外的职责, 就添加功能来说,装饰模式比生成子类更为灵活。

8 代理模式

为他人做嫁衣

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

有一些例子

A. 远程代理, 也就是为一个对象在不同的地址空间提供局部代表, 这样可以隐藏一个对象存在与不同地址空间的事实。

B. 虚拟代理,是根据需求创建开销很大的对象, 通过它来存放实例化需要很长时间的真实对象。

C. 安全代理,用来控制真实对象访问的权限

D.智能代理,是指当调用真实的对象时, 代理处理另外一些事。

9. 工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到子类。

interface IFactory { LeiFeng CreateFactory() }
class UdergraduateFacoty:IFactory {
  public LeiFeng CreateLeiFeng() {
     return new Ugrate();   
 }  
}
class VoluteerFacory:IFactory {
    public LeiFeng CreateLeiFeng() {
       return new Voluteer();   
    } 
 }

// client
IFacotry factory = new UndergrateIFacotry();
LeiFeng student = facotry.CreateLeiFeng();
student.name();

 优点:

遵守了关闭开放原则

简单工厂的好处是工厂类包含了必要了逻辑判断,根据客服端的选择动态实例化相关的类。可是违背了开放-封闭原则

10. 原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

其实就是从一个对象再创建另外一个可定制的对象, 且不需要知道任何创建的细节。

这里clone对象, 设及浅赋值和深复制

浅赋值:被复制的对象的所有变量都含有与原来的对象相同的值, 而所有的对对象的引用都仍然指向原来的对象

深复制:把引用的对象的变量指向复制过的对象, 而不是原有的被引用的对象。

原文地址:https://www.cnblogs.com/connie313/p/14730519.html