gpt4 book ai didi

c# - 这是 DIP (SOLID) 的有效使用吗?

转载 作者:太空狗 更新时间:2023-10-30 01:01:45 26 4
gpt4 key购买 nike

我想问一下 GenotypesIndividual 类的实现是否违反了依赖倒置原则?如果是,如何解决?

classes-abstraction hierarchy

代码如下:

public interface IGenotype
{
//some code...
}

public abstract class AIndividual
{
// ... some code
public IGenotype Genotype { get; set;} // DIP likes that !
}

public class Individual : AIndividual
{
public Individual()
{
// some code ...
this.Genotype = new Genotype(); // Is this ok in case of DIP?
}
}

public class Genotype : IGenotype
{
// ... some code
}

最佳答案

依赖倒置原则处理的是软件模块,不一定是类。这个想法是,与其让高层依赖于低层的编码方式,不如让高层通过提供抽象类来定义层接口(interface)(C# interface 服务于此)很好地)让较低层实现和提供高层所需的服务。一个常见的错误是将此原则与 dependency injection 混淆。 ,其中依赖项由更高级别提供给依赖类,而不是依赖类需要找到它们并创建它们。

您似乎在询问依赖注入(inject),即“我的依赖类如何获得我的依赖实例?”这个例子看起来像是属于同一个域模型的这两个类,这意味着它们很可能在同一个模块中。让一个类依赖于另一个类并直接在同一个模块中创建它是一种合理的方法,但是 Factory pattern随着类的发展变得更加健壮。

关于c# - 这是 DIP (SOLID) 的有效使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36935471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com