zoukankan      html  css  js  c++  java
  • SRP(Single Responsibility Principle) 单一职责原则

    SRP的意思就是一个类只有一个引起他变化的原因,怎么理解,就是将稳定的部分封装在

    一个class里面,变化的部分用接口隔离起来。

    public interface IDBAction {

       void add();

       void delete();

    }

    public class DBManager implements IDBAction {

    @Override

    public void add() {

    if (isLegalUser()) {

    DebugLog.log("add action");

    }

    }

    @Override

    public void delete() {

    if (isLegalUser()) {

    DebugLog.log("delete action");

    }

    }

    private boolean isLegalUser() {

    return true;

    }

    }

    从面的case不难想到,因为业务需要,在add/delete之前都需要判断该用户的权限,导致如果isLegalUser的逻辑发生变化,这个包含这个方法的方法
    都需要改变,作为一位合格的程序要意识到应该将次变化隔离:
    首先添加一个接口:
    public interface IUserChecker {
       boolean isLegalUser();
    }
     
    public class TnUserChecker implements IUserChecker {
     
    @Override
    public boolean isLegalUser() {
    // TODO Auto-generated method stub
    return true;
    }
     
    }
    将manager重构如下:
    public class DBManager implements IDBAction {
     
    private IUserChecker checker;
     
    public void setChecker(IUserChecker checker) {
    this.checker = checker;
    }
     
    @Override
    public void add() {
    if (checker.isLegalUser()) {
    DebugLog.log("add action");
    }
     
    }
     
    @Override
    public void delete() {
    if (checker.isLegalUser())  {
    DebugLog.log("delete action");
    }
     
    }
    }
    这样isLegalUser的变化和DBManager 的关联不是那么密切,有一天如果isLegalUser从数据库
    验证变成jndi验证,只需要变相应的实现就可以了。
     
  • 相关阅读:
    软件工程概论课堂测试一
    每日站立会议个人博客五
    每日站立会议个人博客四
    典型用户以及场景分析
    每日站立会议个人博客三
    每日站立会议个人博客二
    每日站立会议个人博客一
    软件工程概论第三周学习进度条
    软件工程概论第二周学习进度条
    四则运算1
  • 原文地址:https://www.cnblogs.com/budoudou/p/2299617.html
Copyright © 2011-2022 走看看