前言
C#以及设计模式,学习了有一段时间了,也可以说拖了有一段时间了,一直没有好好总结一下,该开始慢慢的写写这一块的总结了。今天采访丁成云师姐的时候,师姐也提到了总结的重要性,总结是为了让我们更好的理解,理解是为了更好的应用,而且现在总结对于我们来说是一种奢侈的事儿,工作以后想写写总结都没有时间也没有耐心。
米老师常说的一句话“变是永远不变的”,也由此可见很多事是我们无法掌握的,设计模式也是如此,有太多的模式,我们无法将每一种都掌握,但是几乎每一个模式都是以原则为根本,而且原则是不变的东西。
所以可以这样说,只要掌握了这些原则,各种模式也就离我们不再遥远了。
具体设计原则
1、单一职责原则SRP:即设计类时,类的功能越少越好.
定义:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。
2、开放闭合原则OCP :即对外扩展开放,对内修改封闭
定义:软件实体应当对扩展开放,对修改关闭。这句话说得有点专业,更通俗一点讲,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,去扩展新功能。开闭原则中原有“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于代码的修改是封闭的,即不应该修改原有的代码。
3、依赖倒置原则DIP:即高端类尽量依赖于接口,而不依赖于低端类.
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。中心思想是面向接口编程
为什么叫依赖倒转呢,传统的软件结构化分析和设计都是高层依赖低层的,比如说模块调用子模块,渐细式的模块划分和由高往低的调用等。因此,相对于传统的依赖模式,把这种高层依赖抽象,低层依赖抽象的模式叫依赖倒转。
4、里氏替换原则LSP:即子类代替父类.
5、迪米特法则LOD:即类和类之间的关联关系越少越好.
6、接口隔离原则ISP:即一个类对另外一个类的依赖性应当是建立在最小的接口上的.
7、合成聚合复用原则CARP:即能使用组合方式编码,不采用继承.
总结
这些都是设计模式中用到的原则,如果想要更好的掌握的这些原则,最好的方法就是去各种模式中体会。很无奈,设计模式看了一多半了,这些原则还是无法更深层次的理解,看来道行还浅的很,还得继续修炼。