微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单一职责原则

什么是单一职责原则


单一职责原则(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. }  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐