一位同事向我介紹了通過允許派生類覆蓋私有字段初始化來隱藏實現細節的概念。通過使用受保護的虛擬隱藏實現細節
比如我有一個基類:
public class Animal
{
private Dog dog;
private Cat cat;
private Mouse mouse;
protected virtual void Init()
{
dog = new Dog();
cat = new Cat();
mouse = new Mouse();
}
public void DoStuff() {}
}
這讓我派生類的基類下身內覆蓋初始化:
public class Cookie : Animal
{
protected override void init()
{
//do whatever i want here
}
}
- 請問這類型的實現 - 尾巴隱藏有一個名字?
- 我會從動物調用Init()還是這個模式堅持Init(),因爲從派生類調用?
我想實現什麼?
我有一個類(上面的例子中的動物),有大約20個需要初始化的私有對象,我希望能夠定義我自己的方式,特別是在進行單元測試時初始化它們。
你的第二個問題不清楚,你可以請你重新說明和解釋你想達到什麼目的。 –
@SirajMansour更新回答你的問題 –
嗯...我想我們稱之爲「虛擬方法」? https://msdn.microsoft.com/en-us/library/aa645767(v=vs.71).aspx - 順便說一句,你應該看看SRP,他們在哪裏把耳朵上的整個範例。 – code4life