-
关于审批单业务中的策略模式运用的问题。3
关于审批单业务中的策略模式运用的问题。
我的业务场景中需要处理一种审批单据,
这种单据根据提出人不同(日入经理和普通职员),
审批者是不一样的。
我想通过策略模式给单据返回不同的审批者
//伪代码如下:
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;
}
}
Main()
{
ApprovalForm form = new ApprovalForm();
if ( current user is Manager )
form.approvalStrategy; = new ManagerStrategy ();
if ( current user is Manager )
form.approvalStrategy; = new EmployeeStrategy ();
}
问题是,策略模式虽然帮我在ApprovalForm里面去掉了硬编码的判断,
但是最终我还是要在Mian里面进行硬编码的判断。
这个问题应该如何解决呢?或许应该更改我的设计?
问题补充:如果不能消除这个硬编码的判读,那应用策略模式就是一种过度设计,
不如果把硬编码的判断放到ApprovalForm 里更直观!2011年10月10日 14:07
3个答案 按时间排序 按投票排序
-
这倒与策略模式关系不大,而是任何模式都需要有一个入口,来找到你真正的实现类,而这个入口就是你纠结的判断问题,我推荐用一个策略工厂专干这个事儿
2011年10月10日 14:50
-
设计模式只是帮你减少选择的过程和容易扩展,但是不能完全消除if else,因为必然有一个地方需要这样去判断,顶多有的模式是隐藏了判断的实现,你感觉看不到而已。而你这个需求,current user 这个人的角色,肯定是从前台,或者是从当前session获取到的一个标识,你要怎样把这个标识和你的底层类结合起来,还是得靠判断,所以还是别想消除这个if else了,倒是我觉得你可以把这个判断放到更加底层的类里面,比如你建立一个工厂,这个工厂通过你的参数来生产对应的实现类。
2011年10月10日 14:37
-
//伪代码如下: 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; } } 直接在这层加判断就行
2011年10月10日 14:28
相关推荐
二是由于商业模式的不同,比如支付宝对商户的手续费率可能为0,这样的价格策略对银行的POS收单业务造成巨大冲击。 在渠道方面,互联网金融对银行网点人流的下降影响最为直观,近两年来银行网点数量和ATM机的交易...
根据系统反馈调整自己的业务策略。 系统还支持多种查询方式,包括按时间段、单式和复式查询,以及模糊查询。业务概要和详情统计分析有助于管理层深入了解市场动态。同时,系统提供了数据管理功能,允许随时更改业务...
接着,华润集团的6S管理体系是其在实践中发展出的系统化管理模式。6S分别代表利润中心的战略、管理报告、预算、评价、审计和经理人考核。这一体系强调每个利润中心作为一个独立的业务单元,需要有明确的战略定位、...
通用信托业务,作为信托行业中的一种重要服务模式,其灵活多样的特点使得信托业务能够广泛应用于个人和法人。自通用信托业务诞生以来,随着全球资本证券化的进程,它的重要性日益凸显,成为重要的投资和融资工具。 ...
### 银行关于金融支持中小企业、县域经济发展情况的关键知识点 #### 一、信贷支持概况 1. **中小企业信贷支持**: - 近年来,银行对中小企业的信贷投入呈现加速增长趋势,2003年对中小企业的贷款总额达到201亿元...
服务治理确保了服务的稳定性和可靠性,例如使用Spring Cloud Netflix中的Hystrix进行熔断和降级策略,或使用Zipkin、Skywalking等进行服务追踪。 5. **消息中间件**:在大型Scoa系统中,服务间的通信可能通过消息...
付款排程的业务场景举例包括淮南矿业的单组织独立应用,鲁西化工的收支两条线和统收统支模式,以及平煤的计划审批模式。在计划管理模式上,分为月度计划总额与周申请明细结合、月度申请明细分解支付等不同策略。而在...
这些挑战迫使商业银行寻找新的市场定位和业务模式。例如,市场竞争的激烈表现为竞争主体的多样化,不仅有传统银行,还有互联网金融公司、非银行金融机构等,竞争形式也从单纯的产品竞争转向了关系营销和服务体验的...
- **设计模式**:源码中可能运用了如工厂模式、策略模式、观察者模式等设计模式,以提高代码的可维护性和可扩展性。 - **并发控制**:工作流系统通常涉及到多个任务并行执行,因此对并发控制和事务管理有较高要求,...
这个系统可能是为了模拟或优化实际银行或其他金融机构中的贷款申请审批流程。 【描述】:“毕业设计”通常是指高等教育阶段学生在毕业前完成的一项综合性项目,目的是综合运用所学知识解决实际问题或创新性任务。在...
分析模式是解决常见分析问题的预定义策略或模板。它们提供了对特定问题域的深刻洞察,有助于加速分析和设计过程。 #### 分析员(Analyst) 分析员是在软件开发项目中负责需求分析的专业人士。他们与客户沟通,收集...
【摘要】:本文探讨了信息化时代企业财会管理创新的重要性及面临的挑战,分析了当前企业财会管理存在的问题,如制度不完善、管理模式落后、信息化人才短缺等,并提出了相应的创新策略,强调了打破传统观念、引入信息...
这个模块详细涵盖了销售管理中的多个关键环节,包括产品概述、应用角色、接口说明、应用准备以及各类业务操作。 1. **产品概述**: UV产品的销售管理模块提供了全面的销售流程,包括报价、订货、发货、开票,支持...
原有的集中管理模式导致财务审批缓慢,影响业务效率。青啤寻求更灵活且能有效控制风险的财务管理模式,以加快决策速度,减少内部交易成本。 再者,增强与分销商和供应商的协同是关键。过去,青啤的信息化局限于单个...
这种模式的核心在于利用大数据进行风险控制,减少了传统信贷业务中的信息不对称问题。 二、大数据驱动的风险评估 1. 数据源丰富:阿里信贷模式充分利用了阿里巴巴平台的交易数据、用户行为数据、支付数据等,构建...
通过这次内部培训,参与者将深入理解金碟EAS的核心功能和开发模式,掌握如何利用BOS进行定制化开发,设置合理的编码规则,熟练运用单据转换和工作流工具,以及建立有效的预警策略。这些知识对于优化企业业务流程,...
标题中的“一站式行政审批系统前端”指的是一个综合性的网络应用程序,主要功能是...同时,对于准备毕业设计或课程设计的学生来说,这是一个宝贵的实践平台,能帮助他们在实际项目中运用所学知识,提高问题解决能力。
【HCPC管理系统EJB源码】是一个基于EJB2.0技术实现的管理系统的源代码集合,主要用于理解和学习EJB在实际系统中的...通过分析和研究源码,可以学习到EJB组件的实现、J2EE架构的运用以及在业务场景下的问题解决策略。
5. 审批流程自动化:邮件定时发送,实时提醒待审批单,缩减审批时间。 6. 文档智能化管理:通过与Sharepoint无缝集成,实现文档的智能管理。 7. 库存管理模块:实时监控各驻点楼盘仓库里的物料数量。 8. 设备保养...
在分析阶段,我们需要理解企业的业务流程,识别关键功能需求,如文档管理、任务分配、日程安排、审批流程等,并对现有工作模式进行优化。同时,也要考虑系统的可扩展性、安全性、稳定性和用户体验。 【标签】"web...