依赖管理问题

时间:2010-08-26 17:22:45

标签: oop dependency-management

我不确定我是否真的了解依赖管理。这是否意味着你只是不依赖于另一个班级的细节?这并不意味着与呼叫本身有关吗?我一直听到要做更小的更具体的课程,但他们不能相互依赖,这对我来说似乎不可能。有人可以试着简单地向我解释一下。我在下面举了一些例子。

//Bad Dependency
public class TestOne
{
     TestTwo testTwo;
     public void TestOneMethod()
     {
          testTwo = new TestTwo();
          testTwo.SomeProperty = "Value";
          testTwo.SomeMethodThatWorksWithSomeProperty();
     }
}
//Bad dependency??
public class TestOne
{
     TestTwo testTwo;
     public void TestOneMethod()
     {
          int myInt = 0;
          TestThree testThree = new TestThree();
          //... Some Code that works with testThree

          testTwo = new TestTwo();
          myInt = testTwo.GetSomeInteger(testThree);
     }
}

每次运行只能设置一组设置,那么为什么每次调用新类时我都想继续命中数据库?这是一个糟糕的依赖


public static class Application
{
    public static int SomeSetting = 0;
    public static GetSettingsFromDatabase()
    {
        //loads the settings for this store
        DatabaseClass dbClass = DatabaseClassDataSource.LoadForStore();
        SomeSetting = dbClass.SomeSetting;
    }
}

public class MyClass
{
    public void MethodOne()
    {
        if(Application.SomeSetting == 1) { //... }
    }
}

public class MyClassTwo
{
    public void MethodOne()
    {
        if(Application.SomeSetting == 1) { //... }
    }
}

2 个答案:

答案 0 :(得分:1)

依赖关系管理是一种避免大型代码库无法维护的做法。我们可以说代码库是不可维护的,如果你试图理解它的结构,看起来像一盘spaghettis !!

依赖关系管理包括在类命名组件中对类代码工件进行分组,并检查组件之间的依赖关系是否仍然可以理解和理智(通过避免依赖项循环等缺陷)。本文中的更多详细信息:Control component dependencies to gain clean architecture

答案 1 :(得分:0)

当然,如果您正在使用资源密集型操作(如调用数据库),那么为了提高性能,您可以证明打破设计模式是正确的。也就是说,我不确定这总是一个不好的做法 - 我很确定在.NET框架中有一些例子(我敢打赌),这些例子非常紧密耦合,但我怀疑你会看到很多暴露给公众的。但是,如果你打破了设计模式,你可能想要记录发生了什么以及为什么,特别是如果其他人会查看或维护这些代码,并尽可能内化。