在学习设计模式之前,面向对象设计原则是必须要了解的东西。因为大多数设计模式都遵循这些设计原则中的一种或者多种。今天就带大家一起去学习学习七类面向设计原则。首先列出常用的7中面向对象设计原则。下面的这个表格里面的内容有些比较抽象,您可能看不懂,但是没关系,后面我会做详细解释,并且有配套的视频教程。
7种常用的面向对象设计原则
设计原则名称 |
定义 |
单一职责原则(SRP) |
一个对象应该只包含单一的职责,并且该职责被完全封装在一个类中 |
开闭原则(OCP) |
软件实体应当对扩展开放,对修改关闭 |
里氏代换原则(LSP) |
所有引用基类的地方必须透明的使用其子类的对象 |
依赖倒转原则(DIP) |
高层模块不应该依赖低层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象 |
接口隔离原则(ISP) |
客户端不应该依赖那些他不需要的接口 |
合成复用原则(CRP) |
优先使用对象组合,而不是继承来达到复用的目的 |
迪米特法则(LoD) |
每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位 |
一、单一职责原则
单一职责原则是最简单的设计原则,它用来控制类的粒度,其实通俗一点说就是控制一个类能承担多大的职责,再者就是一个类应该只包含某一类职责。比如说最常用的SQLHleper类,它承担的职责就是封装和数据库操作有关的操作。下面举一个简单的例子来说。
public class Student
{
public SqlConnection GetConnection()//连接数据库
{
string str = "";
return new SqlConnection(str);
}
public string GetStudentName()//查询学生姓名
{
SqlConnection conn = GetConnection();//连接数据库
//省略查询信息
return "son";
}
public void DelStudent(string studentId )//根据学号删除学生
{
SqlConnection conn = GetConnection();//连接数据库
//省略删除操作
}
}
这段代码我相信很多初学者都非常熟悉。这是一个学生类Student类,里面有三个方法GetSqlconnection(),GetStudentName()和DelStudent(string studentId)。他们的作用分别是连接数据库,查询学生姓名,根据学号删除学生信息。因为查询学生信息和删除学生要链接数据库进行操作,所以对于初学者来说,比较习惯把他们写在一起。但是这个时候我们的写法就