浏览 2028 次
锁定老帖子 主题:如何处理Value Object的继承关系
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-24
类A是一个容器对象,包含了一个B对象的List. A和B都是VO对象,它们一起成为一个包含一些业务数据的数据结构。A返回给类C,类C是一个业务逻辑对象。它处理并显示A的内容,当然也要取出A里面的B做相应的处理。 问题是,现在我们有一个类似的业务,数据和原有的数据几乎相同,只是B里面多了一些东西。这时候,可以有下面三个选择: 1.修改B,加上新的内容。这样A包含B的数据结构也可以给新业务用。 2.创建新的类A2和B2,让他们完全是新的东西。但是这个问题是出现了重复的代码。唯一不同的是B2里面多了一些东西。 3.我感觉最理想的是B2继承B,添加新的东西。但这个问题是,新业务里面仍然使用A,只不过A里面包含的B2了。可是对于外部的业务处理类,比如C2,它怎么知道是B2而不是B呢?可以用强制类型转换,但这不是好的办法。 希望大家指点一下。 这基本上是一个VO对象的继承关系的处理问题。我翻了23各设计模式,没有看到适合的。 谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-30
记得《敏捷开发》里有一个“依赖倒置原则”,说:不要依赖于具体的实现,而要依赖于接口。说的正好是这个场景。
从B和B2中抽象出接口IB,而A和C只使用IB。 zjueman 写道 但这个问题是,新业务里面仍然使用A,只不过A里面包含的B2了。可是对于外部的业务处理类,比如C2,它怎么知道是B2而不是B呢?可以用强制类型转换,但这不是好的办法。
这说明了你在C的实现中,有逻辑耦合的情况出现,即依赖于具体类的实现。如果能够做到解耦合,实现上面的方法就不难了。 |
|
返回顶楼 | |
发表时间:2007-11-08
但value object如何抽象接口?接口一般好像都是用在业务对象上吧,不是很懂。
|
|
返回顶楼 | |