加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单一职责原则

发布时间:2020-12-14 05:25:40 所属栏目:百科 来源:网络整理
导读:什么是单一职责原则 单一职责原则(Single Responsibility Principle ):就一个类而言,应该仅有一个引起它变化的原因。 二、多功能的山寨手机 山寨手机的功能:拍照、摄像、手机游戏、网络摄像头、GPS、炒股等等。 功能多、但是每一个功能都不强。 拍摄功能

什么是单一职责原则


单一职责原则(Single Responsibility Principle ):就一个类而言,应该仅有一个引起它变化的原因。


二、多功能的山寨手机


山寨手机的功能:拍照、摄像、手机游戏、网络摄像头、GPS、炒股等等。


功能多、但是每一个功能都不强。


拍摄功能 ------专业摄像机或照相机


手机游戏 ------PSP


网络摄像头----专业摄像头


GPS功能------专业GPS导航系统


三、烦人的山寨手机


每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化。如果一个类承担的职责多于一个,那么引起它变化的原因就有多个。一个职责的变化甚至可能会削弱或者抑制类完成其他职责的能力,从而导致脆弱的设计。


四、单一职责原则示例


接受客户端输入并提交到数据库。


原有设计:一个类负责接受客户端输入,对客户端输入进行校验,连接数据库,并提交数据到数据库。

现有设计:一个功能也就是一个职责由一个类来负责。


代码设计:

1、Input获取客户端输入内容

[java]? view plain copy
  1. package?com.ibeifeng.ex2;??
  2. ??
  3. import?java.util.Scanner;??
  4. public?class?Input?{??
  5. ????private?String?username;??
  6. ????private?String?upassword;??
  7. ??????
  8. ????//获得客户端输入??
  9. void?shuru()?{??
  10. ????????Scanner?scanner?=?new?Scanner(System.in);??
  11. ????????System.out.println("请输入用户名");??
  12. ????????username?=?scanner.nextLine();??
  13. ????????System.out.println("请输入密码");??
  14. ????????upassword?=?scanner.nextLine();??
  15. ????}??
  16. ??
  17. public?String?getUsername()?{??
  18. ????????return?username;??
  19. void?setUsername(String?username)?{??
  20. this.username?=?username;??
  21. public?String?getUpassword()?{??
  22. return?upassword;??
  23. void?setUpassword(String?upassword)?{??
  24. this.upassword?=?upassword;??
  25. }??
2、连接数据库
copy
    class?DBManager?{??
  1. ????//连接数据库??
  2. static?void?getConnection()?{??
  3. ????????System.out.println("获得数据库连接");??
  4. ????}??
  5. }??
3、数据操作实现
copy
    class?DAOImp?{??
  1. //进行数据操作??
  2. void?save(String?username,String?upassword)?{??
  3. ????????System.out.println("将"?+?username?+?"保存到了数据库");??
  4. ????????System.out.println("将"?+?upassword?+?"保存到了数据库");??
  5. }??
4、输入校验
copy
    class?Validator?{??
  1. //进行数据校验??
  2. boolean?validate(String?username,?String?upassword)?{??
  3. ????????if(username?==?null?||?"".equals(username.trim()))?{??
  4. ????????????System.out.println("用户名不能为空");??
  5. ????????????return?false;??
  6. ????????}??
  7. if(upassword?==?null?||?"".equals(upassword.trim()))?{??
  8. ????????????System.out.println("密码不能为空");??
  9. true;??
  10. }??

测试类:

copy
    class?MainClass?{??
  1. void?main(String[]?args)?{??
  2. ????????Input?input?=?new?Input();??
  3. ????????input.shuru();??
  4. ????????Validator?validator?=?new?Validator();??
  5. if(validator.validate(input.getUsername(),?input.getUpassword())){??
  6. ????????????DBManager.getConnection();??
  7. ????????????DAOImp?dao?=?new?DAOImp();??
  8. ????????????dao.save(input.getUsername(),?input.getUpassword());??
  9. ????????}??
  10. }??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读