软件工程设计模式——OCP与DIP

对于OCP与DIP的判别过程

 1.找相同类型的具体概念 :如果有两个及两个以上—>ocp  1个—>dip

 2.验证:对代码尝试扩展。如果修改了代码则违反ocp原则

接下来给出一个例题介绍些改进思路:

 public class Department{
    private List<Employee> employeeList;
     ...
    public Employee addEmployee(int employee, String name){
        Employee emp
        switch(employeeType){
        case EMPLOYEE.SALARIED:      emp= new SalariedEmployee(name);break;
        case EMPLOYEE.HOUR:          emp= new HourlyEmployee(name);break;
        case EMPLOYEE.COMMISSION:    emp= new Commission(name);break;
        case default:                emp= new SalariedEmployee(name);break;
        }
        emp.setDepartment(this);
        employeeList.add(emp);
        update;

    }
    ...
}

 

1.抽象: 

抽象一些概念(找出)

抽象概念的行为(找出)

 例如,这个部门类中,招聘的雇员有 salary,hourly,commission  这都是抽象概念

这些概念的行为setDepartment  和  都有构造行为(new)

setDepartment 这一行为是所有抽象概念共有的所以可以忽略不用修改。

剩下构造行为

对于构造行为,工厂模式为最佳选择。

对于非构造行为,策略模式为最佳选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值