Oop “包装中的设计问题”;";将API转换为OO包装器
我正在尝试构建一个面向对象的包装器,它将包装API规范;这包括许多结构、事件和API。 本API规范将每年进行修订,并通过发布新规范进行修订;这些更新可能具有更新的结构、事件和API。更新还将包括 对现有结构、事件和API的更新,API本身不会改变,但它们将各种结构作为参数,最终会进行更新 挑战Oop “包装中的设计问题”;";将API转换为OO包装器,oop,design-patterns,architecture,Oop,Design Patterns,Architecture,我正在尝试构建一个面向对象的包装器,它将包装API规范;这包括许多结构、事件和API。 本API规范将每年进行修订,并通过发布新规范进行修订;这些更新可能具有更新的结构、事件和API。更新还将包括 对现有结构、事件和API的更新,API本身不会改变,但它们将各种结构作为参数,最终会进行更新 挑战 API规范只不过是下层的SDK, 我试图构建的也是一个SDK,但将是一个对象 将包装器定向到此SDK上 要求是用户 想要对象和方法,不要像“C”一样的结构和API 频繁的版本更改不应该对高级版本有任何影
DEV环境:VisualC++ + < P> > P>您的问题太高,无法由设计模式来回答。 您要求的是架构原则 您应该基于您有充分依据的设计决策(“API使用版本控制是向后兼容的,因为…”),而这反过来又基于您的需求(例如,“较旧的应用程序应该在较新的API上工作”) 看看这个(Joshua Bloch关于API设计的演讲基调):
您的问题太高,设计模式无法解决。 您要求的是架构原则 您应该基于您有充分依据的设计决策(“API使用版本控制是向后兼容的,因为…”),而这反过来又基于您的需求(例如,“较旧的应用程序应该在较新的API上工作”) 看看这个(Joshua Bloch关于API设计的演讲基调): 1)如果sdk API涉及手动资源分配,那么此时想到的所有内容: RAII,或ctor,数据或资源管理: 2-5)确定您正在构建的API的函数分解,该函数分解可以用SDK API的每个版本层表示。关于半形式函数分解的一些细节(见下): 然后,如果有必要,您可以获取生成的函数组合,并使其成为可构造的对象。不要担心最终的对象模型,直到您对所涉及的函数组合有了工作上的理解。一开始这很难,但相信我,它比遍历几个可能的对象模型设计要强大得多 对于C++,您可能需要针对每个上游SDK API执行版本定义的预处理,除非SDK在某个文件中对其版本进行编码,这样您就可以代替DLL加载(在这种情况下,这可能是工厂设计模式),但是我怀疑您已经知道了。1)如果sdk API涉及手动资源分配,那么现在想到的就是: RAII,或ctor,数据或资源管理: 2-5)确定您正在构建的API的函数分解,该函数分解可以用SDK API的每个版本层表示。关于半形式函数分解的一些细节(见下): 然后,如果有必要,您可以获取生成的函数组合,并使其成为可构造的对象。不要担心最终的对象模型,直到您对所涉及的函数组合有了工作上的理解。一开始这很难,但相信我,它比遍历几个可能的对象模型设计要强大得多
对于C++,您可能需要针对每个上游SDK API执行版本定义的预处理,除非SDK在某个文件中对其版本进行编码,这样您就可以代替DLL加载(在这种情况下,这可能是工厂设计模式),但是我想你已经知道了。你的文章太复杂了,我看不懂。.谢谢你研究这个函数的复杂性是什么?您每天都使用它们:)。如果你对这篇文章有什么特别的问题,请告诉我,我很乐意回答。你的文章太复杂了,我无法理解。谢谢你研究这篇文章。函数的复杂性是什么?您每天都使用它们:)。如果你有关于这篇文章的具体问题,请告诉我,我很乐意回答。