一位同事向我介绍了通过允许派生类覆盖私有字段初始化来隐藏实现细节的概念。通过使用受保护的虚拟隐藏实现细节
比如我有一个基类:
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