微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – 从依赖项中获取依赖项

假设我有一个PetManager和一只猫:

class PetManager
{
    PetManager(IBusinessLayer businessLayer,IWashingService washingService);

    IBusinessLayer BusinessLayer;

    IWashingService WashingService;
}

class Cat
{
    Cat(PetManager manager,string name,int levelOfStupidity);
}

现在让我们说我的猫需要洗涤服务,是否会如此baaaaad,以获得我的宠物经理的依赖?

class Cat
{
    Cat(PetManager manager,int levelOfStupidity)
    {
        this.manager = manager;
        this.name = name;
        this.levelOfStupidity = levelOfStupidity;
    }

    IWashingService WashingService
    {
        get { return this.manager.WashingService; }
    }
}

我强烈怀疑是的,它会……

解决方法

如上所述,Cat是一个具体的类,所以它可以暴露任何有意义的东西.将构造函数参数公开为只读属性是一件非常明智的事情.

但是,如果Cat实现了ICat,我强烈怀疑通过ICat暴露像PetManager这样的依赖是一个漏洞的抽象.

本质上,interfaces serve as a sort of access modifier.在具体类上公开依赖是有意义的,但在接口上却没有.依赖关系是通过构造函数注入的,因此永远不能成为接口的一部分 – 构造函数签名是我们的自由度.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐