C#设计模式——设计原则
Posted 庚子年冲冲冲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#设计模式——设计原则相关的知识,希望对你有一定的参考价值。
前言
面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。
设计原则是设计模式的基础,但有的设计模式会破坏一些原则,比如状态模式就违背了开闭原则。设计模式也是双刃剑,在使用过程中,没有完美的模式,只有适合的模式。
1:单一职责
单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则。
定义:一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因。
2:开闭原则
开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。
定义:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段
3:里氏代换
里氏代换原则是实现开闭原则的重要方式之一。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
定义:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。
4:依赖倒转
依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。
定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
5:接口隔离
接口隔离原则每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。在使用接口隔离原则时,我们需要注意控制接口的粒度,接口不能太小,如果太小会导致系统中接口泛滥,不利于维护;接口也不能太大,太大的接口将违背接口隔离原则,灵活性较差,使用起来很不方便。
定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
6:合成复用
合成复用原则要求复用时要尽量使用组合/聚合关系(关联关系),少用继承,组合/聚合可以使系统更加灵活,降低类与类之间的耦合度,在使用继承时,需要严格遵循里氏代换原则。
定义:尽量使用对象组合,而不是继承来达到复用的目的。
7:迪米特
迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。只与满足以下要求的对象通讯。
1:当前对象本身
2:以参数形式传入到当前对象方法中的对象
3:当前对象的成员对象
4:如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友
5:当前对象所创建的对象。
定义:一个软件实体应当尽可能少地与其他实体发生相互作用。
END
感谢阅读
你知道的越多,你不知道的越多
我是EAST
一个靠互联网苟且偷生的程序员
咱们下期见!
扫描二维码关注我吧
以上是关于C#设计模式——设计原则的主要内容,如果未能解决你的问题,请参考以下文章