设计模式6大原则 总结

1. 设计模式6大原则:
封装相关的3个:1,2,3


1 .单一职责原则(关注类的功能)(Single Responsibility Principle):一个类只干一件事,减少一个方法的修改影响另一个;职责分拆,分支逻辑分拆,拆分父类+子类,每个类很简单,简单意味着稳定,意味着强大,拆分后代码量多了
1.方法级别单一职责原则:一个方法只负责一件事,
2.类级别单一职责原则:一个类只负责一件事,
3.类库级别的单一职责原则;一个类库应该职责清晰
4.项目级别的单一职责原则,一个项目应该职责清晰(客户端/管理后台,后台服务,定时任务,分布式引擎)
5.系统级别的单一职责原则:为通用功能拆分系统(IP定位,日志,在线统计)

2.里氏替换原则(关注类与类相关直接的类,学校类只关注班级类,不关注学生类):
1.任何使用基类的地方,都可以透明(安全,不会行为不一致)的使用其子类 ,
2.子类可以有自己独有的属性和行为;
3.父类实现的东西,子类不要在写了(不要new 隐藏),防止出现行为调用不一致,如果想修改父类的行为,通过abstarct/virtual;
继承:子类拥有父类的一切属性和行为,任何父类出现的地方,都可以用子类来代替;
多态:通用abstract/virtaul 实现多态

3.迪米特法则:最少知道原则,:一个对象应该对其他对象保持最少的了解;
:只与直接的朋友通信;降低了类与类直接的耦合
类与类直接的关系:
纵向:继承
横向:聚合》组合包含>耦合
依赖别人更少,让别人了解更少(private,protected,internal,protected internal(子类或者类库),public);

4. 依赖倒置原则(面向抽象编程):高层模块不依赖底层模块,应通过抽象来依赖
依赖抽象,不要依赖细节
抽象:是指接口,抽象类,--可以没有元素的实现
细节:普通类--一切都是确定的
抽象类==泛型类
面向抽象的好处:一个方法满足不同类型的参数,只有是实现了这个抽象,都可以用;支持扩展
面向对象的开发,就是类与类之间进行交互,如高层之间依赖底层的细节,细节是多变的,
面向抽象的开发:高层和底层没有直接依赖,而是依赖抽象,抽象是稳定的;80%的设计模式是抽象完成的;
属性,字段,方法参数 返回值...尽量都是抽象
依赖倒置原则:IOC控制反转;

5.接口隔离原则:客户端不应该依赖它不需要的接口
一个类对另一个类的依赖应该建立在最小的接口上;
接口到底如何定义:
1.接口不能大而全,不实现自己不需要的接口的东西;
2.也不能一个方法一个接口,这样抽象没有意义;
3.接口合并,接口继承

6.开闭原则:对扩展开发,对修改关闭
修改:修改现有代码,扩展:新增代码类
声明属性,字段,变量,尽量声明为父类
开闭原则是一个目标,并没有任何的手段,也被称为总则,其他5个原则的建议,就是为了更好的做到OCP;
修改现有方法-->增加方法-->增加类-->增加/替换类库(不用修改编译发布代码)
指导性原则,
//泛型
public void Play<T>(T phone) where T:AbstractPhone
{
phone.Call();
}
//抽象类
public void Play(AbstractPhone phone)
{
phone.call();
}

1.静态类:静态方法不占内存,方法内申请的临时变量随时释放;静态字段--唯一的占据内存,不会释放;
2.virtual 和 abstract 区别:
virtual: 虚方法子类需要改下,不需要不用改写;
abstract:抽象方法子类必须实现填写代码;
3.字段和属性区别(权限控制更细):public in height {private get;set;}
public in salay;
4. 类与类直接的关系:
纵向:继承
横向:聚合》组合包含>耦合
5.继承:子类拥有父类的一切属性和行为,任何父类出现的地方,都可以用子类来代替;
6.多态:通用abstract/virtaul 实现多态 ,不用new 关键字隐藏

原文地址:https://www.cnblogs.com/csj007523/p/14321558.html