精彩博客: https://www.cn blogs.com/dolphin 0520/p/3919839.html
关于对象设计的八项原则进行补充。 前五项原则与设计模式的前五项原则相同,如下。
1、单一职责原则(Single Responsibility Principle,SRP ) :一个类只负责一个功能领域中的相应职责。 或者,对于一个类,可以定义引起其变化的原因应该只有一个。
2、开合原则(Open-Closed Principle,OCP ) :一个软件实体必须对扩展开放,对修改封闭。 这意味着软件实体必须尽可能在不修改原始代码的情况下进行扩展。
3、里希特替换原则(Liskov Substitution Principle,LSP ) :引用基类(父类)的所有位置都必须能够透明地使用其子类的对象。
4、依赖逆转原则(Dependency Inversion Principle,DIP ) )抽象不应该依赖细节,细节应该依赖抽象。 这意味着您必须为接口编程,而不是为实现编程。
5、接口隔离原则(Interface Segregation Principle,ISP ) )使用多个专用接口而不是单个总接口。 也就是说,客户端不应该依赖不必要的接口。
从第六点开始,两者就有区别。
设计模式的第六原则:
6、德米特里定律(Law of Demeter,LoD )一个软件实体应尽量减少与其他实体的交互。
面对对象:
6、首选对象组合,而非类继承
类继承通常是“黑匣子复用”,对象组合通常是“黑匣子复用”。
继承在一定程度上破坏了封装性,子类的父类结合度高。
另一方面,对象的组合对于被组合的对象只要求良好定义的接口,结合度低
7、封装变化
使用封装创建对象之间的边界层,以便设计人员可以在边界层的一侧进行修改而不会对另一侧产生负面影响,从而实现层次之间的松散耦合
8、为接口编程,而不是为实现编程
将变量类型声明为接口,而不是声明为特定的特定类。
客户程序不需要知道对象的具体类型,而是只需要知道对象所具有的接口。
减少系统内各部分的依存关系,实现“高凝聚松散耦合”的类型的设计方案