寻找合适的模式。
假设您有一些对象Data
,您可以将这些对象合并到HistoricalData
对象中(当新的Data
进入并可用时)
您对Data
和HistoricalData
都做了一些事情。一旦你掌握了数字,你就可以从HistoricalData
中得到很多东西。您希望通过公共类**DerivedData**
访问您获得的数据。
目前
Data
(供稿) - > HistoricalData
(用于计算) - > ClassA
Data
(供稿) - > HistoricalData
(用于计算) - > ClassB
每个班级都可以独立访问
我想
Data
(供稿) - > HistoricalData
(由...使用) - > DerivedData
(提供访问权限) - > ClassA
Data
(供稿) - > HistoricalData
(由...使用) - > DerivedData
(提供访问权限) - > ClassB
ClassA和ClassB只能通过DerivedData单例访问 我想明确禁止直接访问类ClassA和ClassB。
请建议一种模式我应该调查以完成此操作
答案 0 :(得分:3)
DerivedData应该只是一个接口而不是单例。
答案 1 :(得分:3)
我建议考虑Abstract Factory或Builder模式。
答案 2 :(得分:1)
你可以做所有这些事情来达到你想要的目的:
答案 3 :(得分:0)
(1)如果可以统一处理ClassA和ClassB,则使DerivedData成为接口/抽象类,然后从DerivedData继承ClassA和ClassB(jzd已经指出)。这样,您就可以通过DerivedData接口为客户端代码提供一致的API。
(2)如果ClassA和ClassB本质上是不同的,并且HistoricalData和客户端代码需要以不同方式对待它们,那么抽象工厂或构建器模式适合Vincenzo已经指出的那样。
上下文是导入,恕我直言。
你说,“我想明确禁止直接访问ClassA和ClassB类。”我的理解是你不想在客户端代码中显式实例化ClassA和ClassB,而是想从HistoricalData获取它们的实例。
我认为制作DerivedData单身人士毫无意义。