不同的对象类型但需要相同的逻辑

时间:2013-06-02 13:07:47

标签: object types

我有问题。我正在使用VSTO C#并使用MailItem对象和AppointmentItem对象。目前,我为每个人提供基本相同的课程。唯一的区别是MailItem类在其逻辑中使用MailItem对象,而AppointmentItem也是如此。

我想以某种方式“合并”这些类,所以我只需要维护一个代码。以下是我尝试的一些选项:

  • 我尝试使用重载,但它仍然导致两个函数,所以 它或多或少与先前相同。

    我尝试使用“动态”参数创建单个方法,但它 使用Linq时导致语法错误。

    最后,我尝试使用var,但由于我需要声明无效 它在if-else语句中,并且它的范围被卡在那里。

如果有可能,有人会有任何建议吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

由于严格的输入规则,语言有时需要单独实现算法。在这些情况下,您可以做的最好的事情是在您的文档中宣布算法的设计是相同的,并确保将来保持并行性。

然而,在重构的世界中,一个共同的超类并不是唯一的方法。我强烈推荐Martin Fowler的作品:http://refactoring.com/

你没有说明你用什么语言实现这个,所以我认为它是一个静态类型的,而不是Smalltalk。你可能会考虑一个访问者模式,但这对于两个类来说可能是过度的。委托模式或代理模式也可以工作。

我找到了一个有用的比较页面,代理,外观和适配器:http://www.netobjectivestest.com/PatternRepository/index.php?title=AdapterVersusProxyVersusFacadePatternComparison