【软件设计基础】关于编写面向对象代码时需要遵守的七大原则_多年了酷拉皮卡依旧还在船上的博客-爱代码爱编程
系列文章目录
前言
为来编写的代码规范,且提高代码的维护性而需要蹲守的七大原则。
一、单一职责
在代码里,所有的类,对象,接口都只能有一种职责(功能),从而减少该类(对象,接口)被修改的动机。特别是测试完的代码最好都不要动,否则bug自负。
二、开闭原则
对原有的代码只能扩展,不能修改。还是那句话,特别是测试完的代码最好都不要动,否则bug自负。
三、接口隔离
任何接口都只能有一个方法,算是对单一职责的一次补充。
四、里氏替换
派生类只能对基类原有的功能进行扩充,不能进行修改。算是对开闭原则的一次补充。
五、迪米特法则
比如有一个A类和一个B类,A类和B类相互知道对方的细节越少越好(耦合性必须低)
六、依赖倒置
比如有一个Course类和一个Student类,这里模拟一下Student调用Course类的前景。
class Course{
//学习java课程
public void javaCourse(){
//todo
}
//学习c sharp课程
public void csharpCourse(){
//todo
}
}
而Student类对其调用就需要这样的写法
class Student{
//学习
public void study(){
Course course = new Course ();
course.javaCourse();
course.csharpCourse();
}
}
这是你要新加一个Js的教材,你会发现要去同时修改Student类和Course类,这样就很麻烦。这时我们可以引用一个ICourse接口,然后让Student类每次都去通过ICourse接口调用课程学习且是新增加一个类必须对原来的类进行修改。写法如下:
interface ICourse{
void learnCourse();
}
class JavaCourse : ICourse{
void learnCourse(){
//todo
}
}
class CSharpCourse : ICourse{
void learnCourse(){
//todo
}
}
class Student{
//学习
public void study(){
//想写java就new java,代码扩展性和阅读性都提高了,还有就可恨的耦合性
ICourse javaCourse = new JavaCourse ();
javaCourse。learnCourse();
}
}
七、合成复用
在设计代码的时候,能用组合关系的尽量用组合关系而不使用继承关系。