编程语言
首页 > 编程语言> > 使用枚举的策略模式.在Java中需要一个简单的例子

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

作者:互联网

参见英文答案 > Where is the benefit in using the Strategy Pattern?                                    8个
我正在尝试理解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 article的策略.

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

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;
}

标签:strategy-pattern,java,enums,design-patterns,java-ee
来源: https://codeday.me/bug/20191006/1863141.html