使用枚举的策略模式。 Java中需要一个简单的例子 [英] Strategy pattern using Enums. Need a simple example in Java
本文介绍了使用枚举的策略模式。 Java中需要一个简单的例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
感谢您提前。
解决方案
应该这样做:
界面策略{
int execute(int a,int b);
}
枚举数学实现策略{
添加{
@Override
public int execute(int a,int b){
return a + b;
}
},
减去{
@Override
public int execute(int a,int b){
return a - b ;
}
},
乘以{
@Override
public int execute(int a,int b){
return a * b ;
}
};
}
这是一个重新实现的维基百科文章使用枚举
的策略。
或稍长一点,但更明确的策略模式:
public interface FailureStrategy {
void fail(String message );
}
枚举失败实施FailureStrategy {
忽略{
@Override
public void fail(String message){
//成功完成任务
}
},
LogToConsole {
@Override
public void fail(String message){
System.out .println(消息);
}
},
ErrToConsole {
@Override
public void fail(String message){
System.err .println(消息);
}
},
RingAlarmBells {
@Override
public void fail(String message){
// Left给学生
}
},
SoundTheKlaxon {
@Override
public void fail(String message){
// Left给学生
}
},
EndTheWorld {
@Override
public void fail(String message){
// Left给学生
}
};
}
public class SomethingLethal {
public FailureStrategy onFail = Failure.EndTheWorld;
}
public class SomethingDangerous {
public FailureStrategy onFail = Failure.RingAlarmBells;
}
public class SomethingBenign {
public FailureStrategy onFail = Failure.Ignore;
}
I'm trying to understand the strategy pattern and enums in java. I've googled this and have found a few articles on the subject, but most of them seemed too complex for my understanding. Could anyone provide a simple example or another link that demonstrates strategy pattern using enums in laymen terms using java?
Thanks you in advance.
解决方案
This should do:
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;
}
};
}
It is a re-implementation of the Wikipedia article using enum
for the strategies.
Or a little longer but more clearly a strategy pattern:
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;
}
这篇关于使用枚举的策略模式。 Java中需要一个简单的例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文