Java六大设计原则介绍
为什么会有设计原则?
遵守设计原则的主要目的就是为了能设计出 稳定,健壮,灵活的程序。
设计原则有哪些?
- 单一职责原则(Single responsibility principle)
- 接口隔离原则 (Interface Segregation Principle)
- 依赖倒置原则 (Dependence Inversion Principle)
- 里氏替换原则 (Liskov Substitution principle)
- 开闭原则 (Open Closed Principle)
- 迪米特法则(Law of Demeter)
设计原则介绍。
-
单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。
-
接口隔离原则
客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。
使用多个专门的接口比使用单一的总接口要好。
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。
“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。
-
依赖倒置原则
依赖倒置原则是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
-
里氏替换原则
派生类(子类)对象可以在程式中代替其基类(超类)对象。
-
开闭原则
软件中的类或对象,应该对扩展开放,对修改关闭。
-
迪米特法则
一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。英文简写为: LOD
个人理解
-
单一职责原则:就是说一个类应该只负责一项职责,如果一个类负责二个及以上职责时,当其中一个职责发生修改,很有可能导致当前类中其他职责出错。所以说一个类中最好只负责一项职责。
-
接口隔离原则:就是说在一个类中不应该依赖它不需要的接口,一个类对另外的类的依赖应该建立在最小的接口上,否则或导致当前类中依赖过多无用的接口,最终导致类代码臃肿,难以维护。
-
依赖倒置原则:实现细节(实现类)应该依赖于抽象(接口或抽象类),在程序中具体实现往往是多变的,而抽象相对要稳定的多,以抽象为基础的机构比以细节为基础的架构要更稳定,
-
里氏替换原则:比如当一个方法接收为父类对象时,可以传入这个父类的子类。在里氏替换原则中,子类应该尽量不要重写父类的方法。如果重写了父类方法,当传入子类时,实际会调用子类的重写后的方法,而无法调用父类中的原方法。
-
开闭原则:对扩展开放,对修改关闭,这不是自相矛盾吗?个人认为 对扩展开放是指对程序内部的扩展(提供方)是开放的,而对于程序的外部(使用方)是无法修改的。当程序发生变化时,应该通过扩展的方式来实现变化,而不是修改已有的代码,这样既不会对旧代码造成影响,也满足了程序的变化。
-
迪米特法则:又称最小知道法则,一个类对于另一个类知道的越少越好,实际开发中,当一个类使用到另一个类时,最好是由外部传入,或定义在成员变量中,而不应该出现在局部变量中。上面的朋友是指:成员变量、方法参数、返回值,陌生人指:局部变量中的类。
网友评论