我不确定我是否真的了解依赖管理。这是否意味着你只是不依赖于另一个班级的细节?这并不意味着与呼叫本身有关吗?我一直听到要做更小的更具体的课程,但他们不能相互依赖,这对我来说似乎不可能。有人可以试着简单地向我解释一下。我在下面举了一些例子。
//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) { //... }
}
}
答案 0 :(得分:1)
依赖关系管理是一种避免大型代码库无法维护的做法。我们可以说代码库是不可维护的,如果你试图理解它的结构,看起来像一盘spaghettis !!
依赖关系管理包括在类命名组件中对类代码工件进行分组,并检查组件之间的依赖关系是否仍然可以理解和理智(通过避免依赖项循环等缺陷)。本文中的更多详细信息:Control component dependencies to gain clean architecture
答案 1 :(得分:0)
当然,如果您正在使用资源密集型操作(如调用数据库),那么为了提高性能,您可以证明打破设计模式是正确的。也就是说,我不确定这总是一个不好的做法 - 我很确定在.NET框架中有一些例子(我敢打赌),这些例子非常紧密耦合,但我怀疑你会看到很多暴露给公众的。但是,如果你打破了设计模式,你可能想要记录发生了什么以及为什么,特别是如果其他人会查看或维护这些代码,并尽可能内化。