使用Enums的策略模式。需要一个简单的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;
}
};
}
这是对策略使用的Wikipedia文章的重新实现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;
}
以上是 使用Enums的策略模式。需要一个简单的Java示例 的全部内容, 来源链接: utcz.com/qa/397879.html