【发布时间】:2017-01-23 01:26:10
【问题描述】:
我只是想不通我应该在这里采用哪种设计模式。假设我有这样的课:
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;
....
简而言之,Person 具有角色,do() 方法取决于他的角色。在某些情况下,他可能不得不转换角色。我认为这个 do() 应该被抽象化(更是如此,因为将来可能会定义其他角色)---但是如何呢?应该有 Role 类吗?
任何帮助将不胜感激。
编辑:
感谢您抽出时间,各位。我想再补充一件事。我确实认为(至少作为一个想法)许多建议的解决方案。以下是我的困难:如果我将 Person 类(例如 PersonTypeA、personTypeB 等)子类化,并将每个特定角色分配给适当的人员类型,那么我在转换角色时就会遇到困难(例如,工程师变成了会计师! ---至少可以说很奇怪。
另一方面,如果我为每个角色创建类;那么(1)一个角色感觉不像一个对象,因为(至少在我的情况下)一个角色没有属性而只有方法。因此,role_A_1 与 role_A_2 没有什么不同。但是对于每个人,我都必须创建一个新的角色对象——即使他们都共享相同的角色。
我不确定我是否说清楚了,我不确定我的观点是否有道理。
【问题讨论】:
-
所以一个用户永远不能同时拥有 2 个以上的角色。 IE:负责人,开发人员?
-
感谢您的所有回复。我会再考虑再回复你。
-
如果您想提供更多信息,请更新您的问题或离开 cmets。我已将您留下的答案转换为评论。
标签: java design-patterns