java设计模式_单一职责原则

一、什么是单一职责原则

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

二、多功能的山寨手机

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

功能多、但是每一个功能都不强。 拍摄功能 ——专业摄像机或照相机 手机游戏 ——PSP 网络摄像头—-专业摄像头
GPS功能——专业GPS导航系统

三、烦人的山寨手机

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

四、单一职责原则示例

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

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

//示例程序:
import java.util.Scanner;

public class SaveToDB {

    private String username;
    private String upassword;

    //获得客户端输入
    public void inputDbUsernamePassword(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        username = scanner.nextLine();
        System.out.println("请输入密码:");
        upassword = scanner.nextLine();
    }

    //进行数的居校验
    public boolean validate(){
        if(username == null || "".equals(username)) {
            System.out.println("用户名不能为空");
            return false;
        }

        if(upassword == null || "".equals(upassword)) {
            System.out.println("密码不能为空");
            return false;
        }

        return true;
    }

    //连接数据库
    public void getConnection(){
        System.out.println("获得数据库连接");
    }

    //进行数据操作
    public void save(){
        System.out.println("将" + username + "保存到了数据库");
        System.out.println("将" + upassword + "保存到了数据库");
    }

}


public class MainClass {

    public static void main(String[] args) {
        //接受客户端的输入
        SaveToDB std = new SaveToDB();
        std.inputDbUsernamePassword();
        boolean validate = std.validate();
        if(validate) {
            std.getConnection();
            std.save();
        }



    }
}

//请输入用户名:
//user
//请输入密码:
//123456
//获得数据库连接
//将user保存到了数据库
//将123456保存到了数据库


//示例2:

import java.util.Scanner;

public class Input {
    private String username;
    private String upassword;

    //获得客户端输入
    public void shuru() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        username = scanner.nextLine();
        System.out.println("请输入密码");
        upassword = scanner.nextLine();
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUpassword() {
        return upassword;
    }

    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }
}

public class Validator {
    //进行数据校验
    public boolean validate(String username, String upassword) {
        if(username == null || "".equals(username.trim())) {
            System.out.println("用户名不能为空");
            return false;
        }
        if(upassword == null || "".equals(upassword.trim())) {
            System.out.println("密码不能为空");
            return false;
        }
        return true;
    }
}
public class DBManager {
    //连接数据库
    public static void getConnection() {
        System.out.println("获得数据库连接");
    }
}
public class DAOImp {
    //进行数据操作
    public void save(String username,String upassword) {
        System.out.println("将" + username + "保存到了数据库");
        System.out.println("将" + upassword + "保存到了数据库");
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值