概述
场景
例题:学生管理类StudentManager包含如下功能,包括连接数据库方法getConnection()、操作数据库方法入search和delete、显示学生信息的方法display。
不使用单一职责原则的解法:
public class Demo {
public void getConnection(String uri) {
System.out.println("与"+uri+"建立联系");
}
public void searchStudent(String condition) {
System.out.println("根据"+condition+"查询学生");
}
public void deleteStudent(String condition) {
System.out.println("根据"+condition+"删除学生");
}
public void display() {
System.out.println("显示学生信息!");
}
//学生类有三个职责,连接数据库,查询、删除数据,显示查询结构
//存在问题
//1.如果需要修改连接的数据库服务器,需要修改这个类
//2.如果需要修改查询方式,或者增加插入学生数据,需要修改这个类。
//有两个引起变化的原因,职责不单一。
单一职责原则概念:
使用单一职责原则的解法:
类图:
代码实现:
//优点
//1.DBUtil封装了数据库连接操作,更改数据库服务器仅仅修改这个类或者配置文件
//2.studentDAO封装了操作数据库的方法,增减插入、更改查询方式等方法比较容易
//学生管理类,仅仅显示学生信息,职责单一
public class studentManager {
private studentDAO dao;
public studentManager(studentDAO dao) {
super();
this.dao = dao;
}
public void display() {
System.out.println("显示学生信息!");
}
}
//数据库操作类,职责单一
public class studentDAO {
private DBUtil db;
public studentDAO(DBUtil db) {
super();
this.db = db;
}
public void searchStudent(String condition) {
System.out.println("根据"+condition+"查询学生");
}
public void deleteStudent(String condition) {
System.out.println("根据"+condition+"删除学生");
}
}
//数据库工具类,职责单一
public class DBUtil {
public void getConnection(String uri) {
System.out.println("与"+uri+"建立联系");
}
}
//实例测试类
public class demo {
public static void main(String[] args) {
DBUtil db=new DBUtil();
studentDAO dao=new studentDAO(db);
studentManager sm=new studentManager(dao);
db.getConnection("MYSQL");
dao.searchStudent("孙悟空");
sm.display();
}
}
运行截图:
最后
以上就是踏实绿草为你收集整理的设计原则之单一职责原则的概念及实例代码操作的全部内容,希望文章能够帮你解决设计原则之单一职责原则的概念及实例代码操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复