如何实现模板方法模式的变体,其中具体类不从基类继承,但保持模式的整体特征。它不能继承的原因是它被迫从另一个类继承,并且多重继承不可用。
例如,假设以下模板方法模式:
public abstract class BaseClass {
public void Alpha() {
Beta();
}
public abstract void Beta();
public void Gamma() {
Delta();
}
public abstract void Delta();
}
public ConcreteClass : BaseClass {
public override void Beta() {
Gamma();
}
public override void Delta() {
Console.WriteLine("Delta");
}
}
...
var object = new ConcreteClass();
object.Alpha(); // will outout "Delta"
在没有 ConcreteClass 继承 BaseClass 的情况下,如何获得相同的结果?