设计模式5大设计原则总结

来源:互联网 发布:linux命令执行过程 编辑:程序博客网 时间:2024/06/07 02:10

软件开发过程,大牛们给我们提出了6个牛叉的定律那就是:

1:开放封闭原则

2:依赖倒转原则

3:职责单一原则

4:接口隔离原则

5:迪米特法则

6:里氏替换原则

这些发则使我们在设计类或者接口之间关系的时候需要考虑和思考的,下面我总结如下:

一:

开放封闭原则  OCP 
核心: 软件开发应该对扩展开放,对修改关闭;具体来说就是你如果想在现有的基础上做一些修改或者拓展,你要用的方法是进行拓展方法或者继承现有方法而不是直接修改原代码
平时使用的几大准则:
1:抽象约束: 使用抽象的接口定义约束边界,同时要注意抽象类这个边界一经约定不能随意更改就像人的承诺和契约一样
2:元数据控制模块行为(元数据: 是描述环境和数据的数据,通俗讲就是配置参数)
3:封装变化: 找出可能变化的点,使用稳定的接口封装起来,我们熟悉的23个设计模式就是从不同的角度去封装变化


依赖倒转原则(DIP)  --体现了设计的稳定性,在周围环境频繁变化的时候,抽象类或者接口都能适应
优点:减少模块间的耦合
关于依赖:
依赖的实现实现方法:
1:构造函数传递依赖
2:Setter方法传递依赖
3:接口申明依赖


单一职责(SRP) 

核心: 一个类 接口 或者一个方法在定义的时候,内部只能由一个原因导致其变化  


里氏替换(LSP)
核心: 任何父类出现的地方都能够被子类替换,而且不会产生任何的问题
具体原则:
1:子类必须完全实现父类方法 == 子类必须实现父类拥有的业务而且不能违背和质变
2:子类可以有自己的个性化设计,之前不违背规则1  --体现的子类出现的地方,父类未必能出现
3: 覆盖或实现父类方法时输入参数可以被放大
4:  覆写或实现父类方法的输出结果可以被缩小
LSP原则的目的是为了增强程序的健壮性,程序升级(增加子类)可以保持很好的兼容性


接口隔离
把一个臃肿的接口变更为两个独立的接口所依赖的原则就是接口隔离,具体要求如下
a:接口要尽量小
b:接口高内聚
c:接口设计有限度

迪米特   --最少知识原则(LOD &&LKP)
核心思想:一个对象应该最其他对象有最少的了解
          
具体分解:
1:只与直接朋友做交流   ex:类与类之间的关系应该建立在类间而不是建立在方法间 所以尽量不要使用 Geta().Getb().Getc().Getd();这样的使用    
2: 朋友间也要有距离    ex:类的设计尽量做到羞涩,需要尽量反复斟酌是否能将更多的方法设计成为 private方法?