使用Enums的策略模式。需要一个简单的Java示例
应该这样做:
interface Strategy { int execute(int a, int b);}enum Math implements Strategy { Add {@Overridepublic int execute(int a, int b) { return a + b;} }, Subtract {@Overridepublic int execute(int a, int b) { return a - b;} }, Multiply {@Overridepublic int execute(int a, int b) { return a * b;} };}
这是对策略使用的Wikipedia文章的重新实现enum。
或更长一点但更清楚的是一种策略模式:
public interface FailureStrategy { void fail (String message);}enum Failure implements FailureStrategy { Ignore {@Overridepublic void fail(String message) { // Do nothing on success.} }, LogToConsole {@Overridepublic void fail(String message) { System.out.println(message);} }, ErrToConsole {@Overridepublic void fail(String message) { System.err.println(message);} }, RingalarmBells {@Overridepublic void fail(String message) { // Left to the student.} }, SoundTheKlaxon {@Overridepublic void fail(String message) { // Left to the student.} }, EndTheWorld {@Overridepublic 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;}解决方法
我试图了解Java中的策略模式和枚举。我已经对此进行了谷歌搜索,并找到了一些有关该主题的文章,但是对于我的理解,其中大多数似乎太复杂了。谁能提供一个简单的示例或另一个链接,使用java中的外行术语枚举来演示策略模式?
预先谢谢你。
相关文章:
1. 下一个页面的三角在上面一个页面会出现,在缩放的时候会遮住文字。2. weex - Android 原生Vue.js 使用 justify-content: flex-end; 不起作用3. javascript - vue-cli热更新的问题【webpack配置】4. python - Django ManyToManyField 字段数据在 admin后台 显示不正确,这是怎么回事?5. android - jni生成的char*在NewStringUTF时报错6. mysql 能不能创建一个 有列级函数 的联合视图?7. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始8. php由5.3升级到5.6后,登录网站,返回的是php代码,不是登录界面,各位大神有知道的吗?9. java - Ckeditor上传图片时出现mutipartRequest 转换异常10. java - 初学SSM 在import自己写的包下的类的时候飘红,求大神解答?

网公网安备