这是一个选择-不使用枚举,而是类似的东西…
public abstract class Logic{ public static readonly Logic PayDay = new PayDayImpl(); public static readonly Logic CollectCash = new CollectCashImpl(); public static readonly Logic EtcEtc = new EtcEtcImpl(); // Prevent other classes from subclassing private Logic() {} public abstract void AcceptPlayer(Player player); private class PayDayImpl : Logic { public override void AcceptPlayer(Player player) { // Perform logic } } private class CollectCashImpl : Logic { public override void AcceptPlayer(Player player) { // Perform logic } } private class EtcEtcImpl : Logic { public override void AcceptPlayer(Player player) { // Perform logic } }}
您 说 您不想为每个逻辑细节都提供一个具体的类-但这基本上就是您在Java中要做的,只是该类对您略有隐藏。
这是一种使用委托代表不同行为的替代方法:
public sealed class Logic{ public static readonly Logic PayDay = new Logic(PayDayAccept); public static readonly Logic CollectCash = new Logic(CollectCashAccept); public static readonly Logic EtcEtc = new Logic(player => { // An alternative using lambdas... }); private readonly Action<Player> accept; private Logic(Action<Player> accept) { this.accept = accept; } public void AcceptPlayer(Player player) { accept(player); } private static void PayDayAccept(Player player) { // Logic here } private static void CollectCashAccept(Player player) { // Logic here }}
在这两种情况下,您仍然可以获得一组固定的值-但您将无法打开它们。您可能有一个单独的“真实”枚举,但这有点混乱。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)