有这样的一个关于“处理策略”需求:
=== 需求 ===
1. 处理策略有若干种类型,比如说,按人员,按部门等。
2. 处理策略需要有一个方法就是判断当前的用户是否符合处理策略:
* 如果处理策略是按人员,当前用户是否是该人员
* 如果处理策略是按部门,当前用户是否是属于该部门
3. 对应不同的处理策略类型,判断当前的用户是否符合处理策略有不同的逻辑
=== 设计 ===
自己准备用状态(或策略)模式来做, 请看UML类图。
在做的时候,遇到一个问题:对于“选择具体状态类的角色”这部分逻辑,我把它放在了AssignRule里。 这部分逻辑出现很多的if/else代码,不知道如何修改?
/**
* initialize State instance, according to type of rule
* @param rule
*/
private void initState(Rule rule) {
String type = rule.getType();
//FIXME: how to eliminate if else
if ("1".equals(type))
setState(new PersonState());
else
setState(new DepartmentState());
}

- 描述: UML图
- 大小: 7.8 KB
分享到:
- 2008-03-13 17:26
- 浏览 1045
- 评论(5)
- 论坛回复 / 浏览 (5 / 3108)
- 查看更多
相关推荐
- 状态模式:允许一个对象在其内部状态改变时改变它的行为。 - 策略模式:定义一系列的算法,把它们一个个封装起来,并使它们可相互替换。 - 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类...
3. **观察者模式(Observer Pattern)**:定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其所有依赖者都会得到通知并自动更新。适用于事件处理系统、图形界面组件等。 4. **策略模式(Strategy ...
在调整过程中,若遇到具体的技术问题或疑惑,可以联系西门子官方技术支持,通过提供的服务与支持获取专业的解答和帮助。同时,用户还可以访问西门子官方网站或其他专业资源获取相关的技术文档和指导手册,以确保正确...
在Android开发中,状态切换布局是一个非常实用的设计模式,它能帮助开发者优雅地处理各种不同状态的显示,如数据加载中、数据加载失败、数据为空、网络错误等。"Android-最简单的状态切换布局"这一主题就是围绕如何...
实际上,学生个体学习能力和学习效果存在差异,流水线式的教学可能造成学生在教学学习过程中对某一要点存在疑惑或不理解,有可能带着疑惑继续完成当次的后续学习内容,结果可能就是疑问的雪球越滚越大,最终教学和...
以下是对REST疑惑的详细解答: 1. REST不仅限于CRUD: REST不仅仅局限于基本的数据库操作,它可以处理更复杂的业务逻辑。虽然GET、PUT、POST和DELETE对应于创建、读取、更新和删除资源,但这并不意味着REST不能...
在线上教学中,教师可以即时了解学生的学习状态,对于学生的错误和疑惑能够及时地给予反馈和解答。同时,大数据技术的应用使得教师能够从宏观角度把握教学进度与效果,及时调整教学策略。 综上所述,在大数据时代...
在实施过程中,教师需准确把握教学目标,设计简洁明了的自学提纲,并时刻关注学生的学习状态,适时调整教学策略,以确保“102510”模式的有效运行。同时,持续反思和改进,以适应不同学生的学习需求,促进教学质量的...
在这样的教学情境中,学生能够在放松的状态下提升英语听说能力,自然而然地吸收新知识。 明确学生的主体地位,建立平等的互动平台,是实现互动式教学的核心。在实际教学中,教师应鼓励学生主动参与,发挥他们的主观...
这不仅扩展了教学时间,也促使学生提前进入学习状态,形成自我学习的习惯。 2. 课上内化巩固复习: - 交流回顾、调整起点:教师引导学生分享课前复习的成果和疑惑,以此调整教学计划,确保复习内容更具针对性。 -...
教师通过自身的专业舞蹈技能,示范并指导学生掌握标准的舞蹈动作,同时解答学生的疑惑,帮助他们提升专业水平。而学生之间的互动则有助于解决因年龄差异导致的理解难题,通过同伴间的交流和合作,共同加深对舞蹈知识...
教师可以通过数据反馈了解每个学生的学习状态,针对性地提供辅导,确保每位学生都能得到适合自己的教学资源。对于基础较弱的学生,教师可以提前发布教学视频和资料,让他们在课前做好准备,缩小与他人的差距。 此外...
1. **问题意识的形成**:问题意识是指个体对未解问题或疑惑产生的探索心理状态,它能驱动学生积极参与思维活动,提出问题并寻求解答。问题可以使学生的注意力集中,促进有针对性的思维和探索。 2. **问题类型与分类...
这篇博客“Java线程间数据交换的疑惑”可能探讨了在并发编程中如何有效地共享和同步数据。`volatile`关键字是Java中用于实现线程间通信的一个重要工具,它在多线程环境下起着关键的作用。 首先,我们要理解`...
精讲点拨则是教师针对学生自学中的难点和疑惑进行精准讲解,帮助学生攻克难关,进一步加深对知识的理解;交流展示环节通过小组讨论和班级分享,让学生在展示学习成果的同时,也通过相互学习进一步提升;达标测评环节...
例如,教师可以通过制作或选取相关的慕课视频,让学生看到不同生物在各种环境下的生存状态,从而理解生物与环境的相互影响,提高教学效果。 其次,慕课有助于培养学生的自主学习能力。在课前预习或课后复习环节,...
当学生遇到难以克服的困难时,导讲环节则要求教师及时介入,引导学生自我表达和解决疑惑,而不是简单地提供答案。这样,学生在教师的引导下学会思考和解决问题,逐步形成独立学习的能力。 其次,"六环节"课堂教学...
监控输入信号部分则是对电梯系统运行状态的实时监控,涉及到的信号类型繁多,包括但不限于召唤模式、操作模式、位置显示、门状态等。通过对这些信号的监控,可以及时发现电梯运行中的异常情况,保障乘客的安全。 ...
1. 构建网络教学平台:利用QQ、微信等社交媒体工具,教师可以创建在线学习社区,及时解答学生疑惑,增强师生之间的沟通。网络平台还能为学生提供丰富的学习资源,鼓励他们自我探索,培养自主学习能力。 2. 多样化...
设计良好的状态页可以使用户更加清楚地了解应用的工作状态,减少疑惑和挫败感。 接下来,"Dashboard"这个词意味着这些设计素材可能涉及的是一个控制面板或者仪表盘界面。在许多应用中,dashboard作为主要的交互界面...