我应该选择什么样的设计原则/模式?

时间:2013-03-12 17:20:03

标签: c# design-patterns vsto

我开发了一个VSTO 4.0加载项,旨在将我们的业务应用程序集成到Microsoft Word中。在制作插件中编写的代码是一个迷你框架,我想重新用于Microsoft PowerPoint的新插件。主要问题是Word和PowerPoint界面(例如,Microsoft.Office.Interop.Word.Table和Microsoft.Office.Interop.PowerPoint.Table)没有共同的祖先,但我需要创建一个通用的API插入,更新,表格和图形等,它们将被标准化以与Word和PowerPoint对象一起使用。我应该选择什么样的设计原则/模式?我使用的类的示例如下:

 using Word = Microsoft.Office.Interop.Word;

 public class ReportHolder
 {
     public ReportHolder(Word.Document document) { ... }

     public void AddTable(Word.Range range) { ... }
 }

2 个答案:

答案 0 :(得分:3)

听起来你正在寻找Adapter模式。

另一种方法可能是您的框架通过您自己的一组类以抽象和通用的方式处理它的工作。然后有两种不同的渲染内容的策略(两个单独的渲染器,一个用于Word,一个用于Powerpoint)。

答案 1 :(得分:1)

如果您无法在应用程序层次结构级别找到需要实现令人满意的泛化的公共接口,则至少可以选择两个且可能更多的选项。

第一个选项是实现strategy pattern并为策略定义自己的界面。执行此操作后,您可以编写策略界面的定义,然后在每个策略类代码中编写word,excel,power-point等类型特定逻辑。一旦完成了所有策略类,就可以实现{{ 3}}以获得您正在寻找的代码重用。

第二个选项是将更多泛型类型对象用于函数的参数,例如接口和类型对象引用。完成后,您可以利用.net框架中的反射类对特定对象进行类型检查,然后处理每个特定情况。

最后,在查看这些替代方案或其他任何替代方案之前,我建议您真正深入了解msdn文档,以了解.net的办公室互操作性框架的整体架构,看看是否有可用的有效概括和现有的模式。代码重用的地方。我也知道,为了这个目的,后期绑定在整个框架中被广泛使用,它可能是一个很好的起点。这是一些额外的参考资料。

factory pattern

Late Binding In Office Solutions

享受!

相关问题