使用枚举的策略模式。 在Java中需要一个简单的例子

我正在尝试理解java中的策略模式和枚举。 我已经搜索了这篇文章并找到了一些关于这个主题的文章,但是大多数文章看起来都太复杂了。 任何人都可以提供一个简单的示例或其他链接,使用java在外行术语中使用枚举来演示策略模式吗?

提前谢谢你。

这应该做:

interface Strategy { int execute(int a, int b); } enum Math implements Strategy { Add { @Override public int execute(int a, int b) { return a + b; } }, Subtract { @Override public int execute(int a, int b) { return a - b; } }, Multiply { @Override public int execute(int a, int b) { return a * b; } }; } 

这是使用enum进行策略的维基百科文章的重新实现。

或者更长一点但更明确的策略模式:

 public interface FailureStrategy { void fail (String message); } enum Failure implements FailureStrategy { Ignore { @Override public void fail(String message) { // Do nothing on success. } }, LogToConsole { @Override public void fail(String message) { System.out.println(message); } }, ErrToConsole { @Override public void fail(String message) { System.err.println(message); } }, RingAlarmBells { @Override public void fail(String message) { // Left to the student. } }, SoundTheKlaxon { @Override public void fail(String message) { // Left to the student. } }, EndTheWorld { @Override public void fail(String message) { // Left to the student. } }; } public class SomethingLethal { public FailureStrategy onFail = Failure.EndTheWorld; } public class SomethingDangerous { public FailureStrategy onFail = Failure.RingAlarmBells; } public class SomethingBenign { public FailureStrategy onFail = Failure.Ignore; }