仅当方法的一部分在所有类中相同时创建抽象方法

Boh*_*ohn 0 c# abstract-class

我有一堆类,我试图重构和抽象他们的常见成员变量和方法.

我在每个类中看到的一种方法是一个名为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语句:)

所以考虑到这张图片,你有没有办法在我的抽象课程中加入一部分内容?

Ode*_*ded 7

在你的基类:

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在所有的继承类.

该模式称为模板方法设计模式.