我有问题。我正在使用VSTO C#并使用MailItem对象和AppointmentItem对象。目前,我为每个人提供基本相同的课程。唯一的区别是MailItem类在其逻辑中使用MailItem对象,而AppointmentItem也是如此。
我想以某种方式“合并”这些类,所以我只需要维护一个代码。以下是我尝试的一些选项:
我尝试使用重载,但它仍然导致两个函数,所以 它或多或少与先前相同。
我尝试使用“动态”参数创建单个方法,但它 使用Linq时导致语法错误。
最后,我尝试使用var,但由于我需要声明无效 它在if-else语句中,并且它的范围被卡在那里。
如果有可能,有人会有任何建议吗?
提前致谢!
答案 0 :(得分:0)
由于严格的输入规则,语言有时需要单独实现算法。在这些情况下,您可以做的最好的事情是在您的文档中宣布算法的设计是相同的,并确保将来保持并行性。
然而,在重构的世界中,一个共同的超类并不是唯一的方法。我强烈推荐Martin Fowler的作品:http://refactoring.com/。
你没有说明你用什么语言实现这个,所以我认为它是一个静态类型的,而不是Smalltalk。你可能会考虑一个访问者模式,但这对于两个类来说可能是过度的。委托模式或代理模式也可以工作。
我找到了一个有用的比较页面,代理,外观和适配器:http://www.netobjectivestest.com/PatternRepository/index.php?title=AdapterVersusProxyVersusFacadePatternComparison