我有一堆类,我试图重构和抽象他们的常见成员变量和方法.
我在每个类中看到的一种方法是一个名为MethodFoo()的方法.这个方法有一个Common体,但每个类都添加了一些更多的东西......例如对于一个类,它是这样的:
private method MethodFoo()
{
// common stuff ...// wow! a Goto Statement ..seriously! //1
**// NON-common stuff just for the method of this class** //2
Goto: // bunch of COMMON stuff again //3
}
Run Code Online (Sandbox Code Playgroud)
所以模板总是像第1部分和第3部分在不同的类中对于这个方法是相同的但是在eaxch类中它的不同之处是第2部分...而且也不要忘记那个丑陋的goto语句:)
所以考虑到这张图片,你有没有办法在我的抽象课程中加入一部分内容?
在你的基类:
private method MethodFoo()
{
// common stuff ...// wow! a Goto Statement ..seriously! //1
DoExtraStuff();
Goto: // bunch of COMMON stuff again //3
}
protected abstract void DoExtraStuff();
Run Code Online (Sandbox Code Playgroud)
这样,你必须实现DoExtraStuff在所有的继承类.
该模式称为模板方法设计模式.