解决方法?

时间:2012-12-22 11:15:49

标签: java architecture wrapper

我希望有很多情况

this=somevalue

将被允许在Java中使用。 例如。当我在超类Person中时,我想将类型从Person修改为Customer a 像

这样的作业
this=new Customer();

会有所帮助。想象一下,我有一个客户关系系统,我保留了一个人员列表,我想根据他们的角色以不同的方式处理它们,但只允许一个主角色。因此,一个人可以是客户,员工或朋友或......

所有人都是从人开始,但在任何时候他们都可以“晋升”为一名士兵。后来我可能想要改变Masterrole。

即使使用Factories,Dependendy注射等,如果不使用角色模式,仍然很难获得可行的解决方案。

获得想要的效果,对象本身可以修改对象的引用,这将是一个很好的解决方法吗?我的第一个想法是让一个Wrapper对象委托对“真实对象”的所有访问 - 真实对象实现实体的接口,例如人。 如果我知道要从Person移动到Customer,则包装器会交换“true”对象。这些方面有没有解决方案?

2 个答案:

答案 0 :(得分:2)

我想你想要实现的不仅仅是更改this指针,还包括对实例的所有引用。所以使用包装器的方法似乎是要走的路。

答案 1 :(得分:0)

  

这些方面是否有任何解决方案?

是。您的包装器概念是一种常见且可行的解决方案,通常称为state pattern。来自GoF

  

在State模式中,对象将请求委托给State对象   代表其当前状态。