首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于C++中依赖注入的几个问题

关于C++中依赖注入的几个问题
EN

Stack Overflow用户
提问于 2014-03-26 07:11:07
回答 2查看 209关注 0票数 1

我正在练习依赖注入,有几个问题我不知道如何处理。

  1. A类可能依赖于3-4其他行为(接口).一方面,将它们全部传递到构造函数中会使对象更难创建和初始化。另一方面,在客户端忘记设置依赖项时,使用setter可能会有问题。什么是正确的方法来处理这件事?
  2. 最终,必须在某个地方创建所有依赖项。如何防止一个类(例如,主类)中存在多个初始化的情况?
  3. 在进行依赖项注入时使用shared_ptr是否被认为是一种良好的实践?在这种情况下,依赖关系的创建者通常无法删除对象,所以使用共享指针对我来说是有意义的。
EN

Stack Overflow用户

发布于 2014-03-26 07:36:57

所有的个人意见,但我们要走了。

1)将依赖项传递给构造函数。如果存在合理的默认值,则提供多个构造函数或使用默认参数。

2)如果您要经常使用同一组依赖项,您可以通过创建一个“依赖集”类来保存一些类型,该类的实例可以传递给构造函数,如下所示:

代码语言:javascript
运行
复制
struct Iface1;
struct Iface2; // Dependent interfaces
struct Iface3;

struct DependencySet
{
    Iface1& iface1;
    Iface2& iface2;
    Iface3& iface3;
};

class Dependent
{
public:
    Dependent(DependencySet& set)
        : iface1(set.iface1)
        , iface2(set.iface2)
        , iface3(set.iface3)
    {}

private:
    Iface1& iface1;
    Iface2& iface2;
    Iface3& iface3;
};

3)就我个人而言,我倾向于像上面那样使用引用并管理生命周期,这样依赖关系就会超过依赖类,但是如果您想要“忘记”一旦使用了依赖项,就可以使用共享指针。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22653907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档