我有一个项目需要实现一个框架,可能会与许多其他项目共享,这个框架是关于"订阅"的。
基本上,这个所做的是将StoreKit
包装在iOS中并与我们的服务器通信,然后可能会在数据库中保存一些东西。我在项目中确实有一个数据库堆栈和网络堆栈,但我还没有将它们抽象成框架/库。
所以我的问题是,我不太确定实现这一目标的正确方法。我应该先将数据库堆栈和网络堆栈作为 2 个单独的框架吗?然后通过将它们放入来创建"订阅"框架?但我也发现这被称为umbrella framework
不推荐。
有什么建议吗?
在我看来,有两种方法可以设计它。
选项A/懒惰
将所有可重用类构建到单个框架中。该框架将包括/编译它完成工作所需的所有支持代码(数据库、网络等(。
然后在各种应用项目之间共享该可重用框架。请记住,不仅要链接到框架,还要将其嵌入到应用中。
这是最简单的设置、设计和维护(针对单个人(。但是,这也意味着创建一个可能过于宽泛和/或隐藏太多底层技术的整体库。
选项B/热情
将每个可重用组件构建到其自己的框架中。高级别框架将与低级框架相联系(但不是嵌入(。
然后,您的应用项目将链接到并嵌入它所需的所有框架。
在运行时,每个框架将(应该(根据需要神奇地加载自身。
这是更多的工作,但有一些优点。每个主要服务都有自己的 I/F,因此你的应用可以直接使用这些组件,而无需"钻取"定义自定义服务的高级框架。
这也可能意味着您在包含哪些代码方面具有更大的灵活性。一个应用可能使用客户端注册服务、数据库和服务器连接,而另一个应用可能只使用客户端锁定和服务器。
它还可能使维护(特别是如果不同的工程师负责每项服务(和回归测试更容易。
最后,这里没有正确的答案,只有权衡。