这是一个奇怪的 oop 问题。我想创建一组对象(在设计时已知),每个对象都有与之关联的某些功能。我可以通过提供可以包含“委托”的对象属性来做到这一点:
public class StateTransition {
Func<bool> Condition { get; set; }
Action ActionToTake { get; set; }
Func<bool> VerifyActionWorked { get; set; }
}
StateTransition foo = new StateTransition {
Condition = () => {//...}
// etc
};
或者,我可以使用一个抽象类并为我要创建的每个对象实现它:
public abstract class StateTransition {
public abstract bool Condition();
public abstract void ActionToTake();
public abstract bool VerifyActionWorked();
}
class Foo : StateTransition {
public override bool Condition() {//...}
// etc
}
Foo f = new Foo();
我意识到这两种方法的实际后果(在设计时创建与运行时创建)是完全不同的。
如何选择适合我的应用的方法?