赞
踩
设计原则名称 | 定义 | 使用频率 |
---|---|---|
单一设计原则(Single Responsibility Principle, SRP) | 一个类只负责一个功能领域中的相应职责 | 4 |
开闭原则 (Open-closed Principle, OCP) | 软件实体应对扩展开放,面对修改封闭(关键是抽象化,并且从抽象化中导出具体化实现) | 5 |
里氏代换原则(Likov Substitution Principle, LSP) | 所有引用基类(父类)的地方能够透明地使用其子类的对象(基类替换成子类,程序不会出错) | 5 |
依赖倒转原则(Dependence Inversion Principle , DIP) | 抽象不应该依赖于细节,细节应该依赖于抽象(针对接口编程,不要针对实现编程) | 5 |
接口隔离原则(Interface Segregation Principle, ISP) | 使用多个专门的接口,而不使用单一的总接口 | 2 |
合成复用原则 (Composite Reuse Principle CRP) | 尽量使用对象组合, 而不是继承来达到复用的目的 | 4 |
迪米特法原则(Law of Demeter, LoD) | 一个软件实体应当尽可能少地与其他实体发生相互的作用 | 3 |
记忆:定义一个类时, 首先满足单一职责原则,只有一个引起它变化的原因。定义类有私有变量,因此,对于私有变量,修改应该封闭,扩展应该开放,满足开闭原则。 类有父类,要满足里氏代换原则,即基类替换成子类,程序不会出错。父类,即引入了抽象层。在引入抽象层之后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象成进行扩展,而无需修改具体类的代码。与父类相关的是接口,与此相关的是接口隔离原则,每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。
合成复用原则:继承进行复用的主要问题是继承复用会破坏系统的封装性,因为继承将基类的实现细节暴露给子类,称为“白箱” 复用。 而利用组合或者聚合关系可以将已有的对象(或者称为成员对象)纳入新对象当中,使之称为新对象的一部分,这种复用称为“黑箱”复用,相对于继承关系而言,其耦合度相对较低,成员对象的变化对新对象的影响不大,合成复用可以在运行时动态进行。
一般而言,如果两个类之间是Has-A 关系应该使用组合或者聚合,如果是Is-A 关系则使用继承。
迪米特法原则,又称为最少知识原则(Least Knowledge Principle, LKP), 是指一个软件实体应当尽可能少地与其他实体发生相互作用。 类之间的耦合度越低,越有利于复用。在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的方位权限;在类的设计上,只要有可能,一个类就应该设计成不变类; 在对其他类的引用上,一个对象对其他对象的引用应当降到最低。
单一职责,依赖倒转,合成复用
开闭原则
里氏替换
最少知识法则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。