public interface ISomeDependency
{
void Calculate(Person person);
}
public class SomeDependency : ISomeDependency
{
void ISomeDependency.Calculate(Person person)
{
person.Age = 30;
}
}
public class Person
{
private static ISomeDependency _someDependency;
public DateTime BirthDate { get; set; }
public int Age { get; set; }
public Person(ISomeDependency someDependency)
{
_someDependency = someDependency;
}
public void CalculateAge()
{
_someDependency.Calculate(this);
}
}
public class Client
{
public Client()
{
Person p = new Person(new SomeDependency());
p.BirthDate = DateTime.Now.AddYears(-30);
p.CalculateAge();
}
}
爲什麼要關注依賴關係是否是靜態的?一般來說,這很重要嗎?私有靜態依賴vs私有依賴
這取決於是否所有的Person對象共享相同的依賴實現與否。如果他們這樣做了,也許它應該是靜態的,但IMO,它不應該傳遞給'Person'的構造函數,因爲這意味着它是非靜態的。 –
注入一個靜態字段沒有多大意義,除非你只能保證一個實例(Singleton)。 – crush