说我正在构建一个大型服务MyService
,其中包含各种SubServices
,它们可以在多线程上下文中执行操作。像这样用C ++设计:
class MyService : public MyServiceInterface{
public:
// Some public methods.
private:
// Some private methods.
// Some sub services. Assume that these are dependency injected.
std::shared_ptr<SubServiceA> a;
std::shared_ptr<SubServiceB> b;
std::shared_ptr<SubServiceC> c;
MyService
可通过用户定义的文件进行配置,我们将其解析为数据结构MyServiceConfig
。此配置不是只读的,应用程序可以在操作过程中对其进行编辑。假设我们已经准备好所有并发原语来管理任何访问。
我的问题是-如果我所有的SubServices
都不需要此配置的排他部分,将std::shared_ptr<MyServiceConfig>
传递给任何SubService
的好习惯吗?如果不需要将整个配置公开给每个系统,这对我来说似乎很奇怪。对此有多种解决方案(如果所需配置的子集很小,则传递各个部分;在MyServiceConfig
中维护对已知SubServices
执行逻辑划分的内部结构),但是我无法清楚地看到什么最好。是否存在用于配置大型服务及其子服务的最佳实践模式?