我只是无法弄清楚我应该采用哪种设计模式。说我有这样的课程:我应该使用哪种设计模式来建模人与角色关系?
class Person
String role;
public void takeRole(String role) {
this.role = role;
}
public void do() {
switch(role)
case a:
do this and that;
this.role = b;
case b:
do this and that;
case c:
do this and that;
this.role=a;
....
总之,一个人有角色和do()方法取决于他的角色是什么。在某些情况下,他可能不得不转换角色。我认为这个do()应该被抽象(更多的是因为将来可能会定义其他角色)---但是怎么做呢?是否应该有一个角色类?
任何帮助将不胜感激。
编辑:
感谢您的保时,人。我想补充一点。我确实认为(至少作为一个想法)许多建议的解决方案。以下是我的困难:如果我将人员类(如PersonTypeA,personTypeB等)分类并将每个特定角色分配给相应的人员类型,那么在切换角色时会遇到困难(例如,工程师成为会计师! ---很奇怪,至少可以说
另一方面,如果我为每个角色创建类,那么(1)角色感觉不像一个对象,因为(至少在我的情况下)是一个角色没有属性,只有方法,因此,role_A_1与role_A_2没有什么不同,但是对于每个人我都必须创建一个新的角色对象 - 即使它们共享相同的角色。我不确定自己是否清楚,我不确定我的观点是否合理。
所以用户永远不会有2+的角色,在同一时间。 IE:领导,开发人员? – 2011-02-03 18:48:06
感谢您的回复。我会再想一想,回到你身边。 – blackened 2011-02-04 10:43:01
如果您想提供更多信息,请更新您的问题或留下意见。我已将您留下的答案转换为评论。 – 2011-02-04 10:44:19