如何在调用自己的植入之前强制继承类的方法实现来调用基方法?
问题描述:
我写了一些不包含密封的类,其中包含3个虚拟公共方法和一个私有方法。如何在调用自己的植入之前强制继承类的方法实现来调用基方法?
我公开这个类,所有我的开发组成员都可以使用这个类(包括继承和重写虚拟公共方法)。
私人方法名称之一是'PrivateMethod77()'。
每次公共方法'PublicMethod77()'调用=>'PrivateMethod77'是在方法实现的第一行调用(在此行后面有更多的蕴含逻辑)。
我想保持这种逻辑与“力”的方法PublicMethod77调用PrivateMethod77方法的PublicMethod77
,第一行是有办法做到这一点的继承和超越?
答
我不认为你可以强制继承类总是先调用一个方法的超级实现,但是:
通常我使用Template method pattern的情况是这样的:
public abstract class TemplateEnforcer
{
private void TheSame()
{
Console.WriteLine("Everyone calls me;");
}
public void TemplateMethod()
{
this.TheSame();
this.NeedsImplementation();
}
protected abstract void NeedsImplementation();
}
public class TemplateImplementer : TemplateEnforcer
{
protected override void NeedsImplementation()
{
Console.WriteLine("Implemented in TemplateImplementer");
}
}
代码输出该呼叫new TemplateImplementer().TemplateMethod()
:
//Everyone calls me;
//Implemented in TemplateImplementer
Template Method模式的好处:
- 强制执行抽象方法。
- 该代码保持干燥。
- 错误被避免,开发人员在开发过程中受到指导。