七大原则
- 原则一-- 开闭原则
- 原则二-- 依赖倒置原则
- 原则三-- 单一职责原则
- 原则四-- 接口隔离原则
- 原则五-- 迪米特法则(最少知道原则)
- 原则六-- 里氏替换原则
- 原则七-- 合成复用原则
开闭原则
- 定义:软件实体对扩展开发,对修改关闭。[注意:实体包括:类、模块和函数]//todo 此处可设置成红色。
- 目的:提高软件系统的可复用性及可维护性。
3.实例:下面代码体现。
public interface Course(){
}
依赖倒置原则
- 定义:代码结构设计时,优先考虑类依赖其他类的抽象,方法的调用也已抽象代替方法代替具体实现方法为主。[大家要切记:1.以抽象为基准比以细节为基准搭建起来的架构要稳定;2.要面向接口编程,先顶层(抽象)再细节(实现)来设计代码结构。
] - 目的:减少类与类之间的耦合性,提高系统的稳定性,提高代码的 可读性和可维护性.
3.实例:下面代码体现。
public interface Course(){
}
单一职责原则
- 定义:指不要存在多于一个导致类变更 的原因。在方法或类层面尽量做到单一性,即方法执行一种行为或类实现一种职责。
- 目的:降低类的复杂度,提高类的可读性。
3.实例:下面代码体现。
public interface Course(){
}
接口隔离原则
定义:是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
注意:
1、一个类对一类的依赖应该建立在最小的接口之上。
2、建立单一职责的接口,替换庞大臃肿接口。
3、尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。目的:高内聚低耦合的设计思想,从而使得类具有很好的可读性、 可扩展性和可维护性
4.实例:下面代码体现。
public interface Course(){
}
迪米特法则(最少知道原则)
- 定义:指一个对象应该对其他对象保持最少的了解,又叫最少知道原则,尽量降低类与类之间的耦合。具体来说:就是只关注依赖接口的成员变量和方法参数,方法中的内部变量不进行关注。
- 目的:减低类之间的耦合性。
3.实例:下面代码体现。
public interface Course(){
}
里氏替换原则
- 定义:一个软件实体如果适用一个 父类的话,那一定是适用于其子类,所有引用父类的地方必须能透明地使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变。--子类可以扩展父类的功能,但不能改变父类原有的功能。
2.引申:
1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2、子类中可以增加自己特有的方法。
3、当子类的方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类 方法的输入参数更宽松。
4、当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即 方法的输出/返回值)要比父类更严格或相等 - 优点:
1、约束继承泛滥,开闭原则的一种体现。
2、加强程序的健壮性,同时变更时也可以做到非常好的兼容性,提高程序的维护性、扩 展性。降低需求变更时引入的风险
3.实例:下面代码体现。
public interface Course(){
}
合成复用原则
- 定义:指尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
- 目的:系统更加灵 活,降低类与类之间的耦合度
3.说明:
1、继承我们叫做白箱复用,相当于把所有的实现细节暴露给子类。
2、组合/聚合也称之为黑箱 复用,对类以外的对象是无法获取到实现细节的。
3.实例:下面代码体现。
public interface Course(){
}
总结
学习设计原则,学习设计模式的基础。在实际开发过程中,并不是一定要求所有代码都 遵循设计原则,我们要考虑人力、时间、成本、质量,不是刻意追求完美,要在适当的 场景遵循设计原则,体现的是一种平衡取舍,帮助我们设计出更加优雅的代码结构。