对所有派生的 类 应用循环条件检查
Apply recurring conditional check to all derived classes
我得到了一个带有抽象 Work() 方法的工作库 class。这在我继承的 classes.overridden/implemented 中得到 overridden/implemented。
我想要实现的是对所有派生的 classes 应用中止条件。模板方法模式在这里似乎对我没有帮助,因为我需要在我的抽象 Work()-class.
中进行此检查
一个解决方法是使 Work() 成为虚拟的,但我不再强制执行它(我想做的):
public abstract class First
{
protected virtual void Work()
{
//do stuff
}
}
public class Second : First
{
protected override void Work()
{
base.Work();
}
}
有什么方法可以实现我的目标吗?
The template method pattern doesn't seem to help me here, because I need this check to occur in my abstract Work()
您选择了正确的模式,但没有正确应用它。
模板方法模式背后的想法是使 Work
成为非虚拟的,并提供一个单独的方法,虚拟的或抽象的,供子classes 重写。这样,所有可能中止作业的检查都将在基础 class 的 Work
函数中执行,而派生的 classes 将提供检查时要执行的操作的实际实现已成功:
public abstract class First {
public void Work() {
if (!CheckPreconditions()) {
// Abort the job
return;
}
DoWork();
}
protected abstract void DoWork();
}
public class Second : First {
protected override void DoWork() {
// Do the actual work here
}
}
我得到了一个带有抽象 Work() 方法的工作库 class。这在我继承的 classes.overridden/implemented 中得到 overridden/implemented。
我想要实现的是对所有派生的 classes 应用中止条件。模板方法模式在这里似乎对我没有帮助,因为我需要在我的抽象 Work()-class.
中进行此检查一个解决方法是使 Work() 成为虚拟的,但我不再强制执行它(我想做的):
public abstract class First
{
protected virtual void Work()
{
//do stuff
}
}
public class Second : First
{
protected override void Work()
{
base.Work();
}
}
有什么方法可以实现我的目标吗?
The template method pattern doesn't seem to help me here, because I need this check to occur in my abstract
Work()
您选择了正确的模式,但没有正确应用它。
模板方法模式背后的想法是使 Work
成为非虚拟的,并提供一个单独的方法,虚拟的或抽象的,供子classes 重写。这样,所有可能中止作业的检查都将在基础 class 的 Work
函数中执行,而派生的 classes 将提供检查时要执行的操作的实际实现已成功:
public abstract class First {
public void Work() {
if (!CheckPreconditions()) {
// Abort the job
return;
}
DoWork();
}
protected abstract void DoWork();
}
public class Second : First {
protected override void DoWork() {
// Do the actual work here
}
}