这些代码之间有什么区别
1。
Public class class1()
{ ... }
Public class Main()
{
public void method()
{
class1 k = new class1; <---
...
}
}
2
Public class class1()
{ ... }
Public class Main()
{
class1 k = new class1; <---
public void method()
{
k.use();
...
}
}
在第二类的根或每个需要class1的方法和函数中创建类实例的更好位置在哪里?
答案 0 :(得分:1)
我说这很大程度上取决于你如何使用这个对象。
是否是一次性资源,每次使用它时都必须进行实例化和处理(考虑数据库连接)?然后在方法中实例化是最安全的方式。
如果容器对象在使用后要快速处理,并且您希望在多个方法中使用依赖项,那么在构造函数中或直接在字段中实例化它可能没问题。
答案 1 :(得分:0)
最好的方法不是在代码中创建新实例,而是使用依赖注入。最好使用一些接口或抽象类。这样您就不会依赖于具体的实现,并且您的代码更易于测试,因为您可以控制passedThroughConstructor
的内容。在为SomeOne
课程编写代码时,您并不关心创建SomeTwo
的位置,而是表明您的SomeOne
取决于它,如果没有它,则无法创建。{/ p>
public class SomeOne{
ISomeTwo _forInternalUse;
public SomeOne(ISomeTwo passedThroughConstructor){
_forInternalUse = passedThroughConstructor;
}
public void SomeOtherMethod(){
_forInternalUse.DoStuff();
}
}