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



我开发了一个VSTO 4.0插件,旨在将我们的业务应用程序集成到Microsoft Word中。代码写在制作插件,是一个迷你框架,我想重用一个新的微软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) { ... }
 }

听起来您正在寻找适配器模式。

另一种方法可能是让您的框架以抽象和通用的方式通过您自己的一组类来处理它所做的事情。然后使用两种不同的策略来呈现内容(两个独立的呈现器,一个用于Word,一个用于Powerpoint)。

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

第一个选项是实现一个策略模式,并为该策略定义自己的接口。一旦你这样做了,你就可以对策略接口的定义进行编码,然后在每个策略类中为word, excel, power-point等编写特定类型的逻辑。一旦您有了所有的策略类,您就可以实现工厂模式以获得您正在寻求的代码重用。

第二种选择是使用更泛型的类型对象作为函数的参数,例如接口和类型对象引用。一旦你这样做了,你就可以利用。net框架中的反射类对特定对象进行类型检查,然后处理每个特定的情况。

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

延迟绑定解决方案

在Office解决方案中编写代码

享受吧!

最新更新