2 回答
TA贡献1786条经验 获得超12个赞
设计模式只是帮你减少选择的过程和容易扩展,但是不能完全消除if else,因为必然有一个地方需要这样去判断,顶多有的模式是隐藏了判断的实现,你感觉看不到而已。而你这个需求,current user 这个人的角色,肯定是从前台,或者是从当前session获取到的一个标识,你要怎样把这个标识和你的底层类结合起来,还是得靠判断,所以还是别想消除这个if else了,倒是我觉得你可以把这个判断放到更加底层的类里面,比如你建立一个工厂,这个工厂通过你的参数来生产对应的实现类。
TA贡献1836条经验 获得超5个赞
//伪代码如下:
class ApprovalForm
{
public ApprovalStrategy approvalStrategy;
//提交申请单
public Send()
{
List<Approver> approverList = approvalStrategy.GetApprover();
Send to next Approver ;
}
}
Interface ApprovalStrategy
{
List<Approver> .GetApprover();
}
class ManagerStrategy : ApprovalStrategy
{
public List<Approver> .GetApprover()
{
return Manager's Approver;
}
}
class EmployeeStrategy : ApprovalStrategy
{
public List<Approver> .GetApprover()
{
return Employee's Approver;
}
}
直接在这层加判断就行
添加回答
举报