设计模式笔记[四种模式+四种原则]

A.简单工厂 :用一个单独的类来做这个创建实例的过程,这就是工厂
不符合开-封闭原刚,每次扩展都要更改工厂类 [计算器]
1.cbxType.Items.AddRange(new object[] { "正常收费","打八折","打七折","打五折"});
  
B,策略模式:定义多种算法,并分别封装,之间可以互相替换,算法的变化不影响到客户;[收银]
[context]用一个concretestrategy来配置维护一个对strategy对象的引用。
[strategy]策略类,定义所有支持算法的公用接口。
[concretestrategyx]具体策略类,封装具体的算法和行为。
 比较:简单认识两个类,策略认识一个类,比简单偶合度更低。
1单一职责原则:就一个类而言,应该仅有一个引起它变化的原因
2开放封闭原则:扩展开放,个性封闭 核心 可维护,可扩展,可复用,灵活性好。
3信赖倒转原则:高层模块,低层模块,细节 依赖抽象[针对接口编程]
4里氏代换原则:子类必须能够替换父类 。
 [由于里氏代换原则,才使开放封闭成为可能]
C,装饰模式,动态的给一个对象增加一些额外的职责(为已有功能动态的添加更多功能)[穿什么有这么重要]
 Component 对象接口:动态添加职责,ConcreteComponent:具体对象,添加职责,Decorator:装饰抽象类,从外类来扩展Component
 [eg.用于],当系统需要新功能的时候,把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象。

D,代理模式,为其它对象提供一种代理以控制对这个对象的访问.
[subject]定义了realsubject和Proxy的共用接口。使得在任何使用realsubject的地方都可以使用proxy.
[realsubject]定义proxy所代表的真实实体.
[Proxy]保存一个引用使得代理可以访问实体,并使得一个与subject接口相同的接口,这样,代理就可以用来代替实体.
 [eg.用于]1)远程代理.webservice,
      2)虚拟代理,浏览器来优化下载,图片一张一张显示出来。     
      3)安全代理。不同的访问权限
      4)智能指引,访问一个对象前,检查是否锁定,以确保其它对象不能改变它


作者:水木    
 
原文地址:https://www.cnblogs.com/hsapphire/p/1268129.html