使用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

回到顶部