如何重载课程

时间:2018-05-14 20:05:43

标签: java design-patterns java-8

最初,我有一个Plan类,其行为如下:

class Plan {
     public enum Type {
         FOO
     }

     String checkFoo() {
        // some check for foo
     } 

     String doSomething() {
     }
} 

现在,我需要添加另一个名为Bar的类型。

class Plan {
     public enum Type {
         FOO, BAR
     }

     String checkFoo() {
        // some check for foo
     } 

     String checkBar() {
       // some check for bar
     }   

      String doSomething() {
     }
} 

现在,checkFoo仅适用于Foo,但不适用于Bar,反之亦然。 如何构建这个最好的“设计模式”?我们应该在每个方法中添加检查并抛出异常吗?有共同的解决方案吗?

2 个答案:

答案 0 :(得分:4)

这里的“常见解决方案”是多态

在Java中, enum (几乎)是一个普通的类。因此,常量可以像这样实现接口

members = document.querySelectorAll('.galleryItem');

function someFunc() {
     console.log(this);
    //add your function scripts here
}

members.forEach(member => {
    member.addEventListener('click', someFunc)
});

在任何情况下,您的来电者都不应该处理有不同的interface Checkable{ String doCheck(); } class Plan { public enum Type implements Checkable{ FOO{ @Overide public String doheCheck() { return "result of Foo check"; } }, BAR{ @Overide public String doheCheck() { return "result of Bar check"; } }; } String check() { for(Checkable checkable: Type.values()){ checkable.doCheck(); } String doSomething() { } } 来检查......

答案 1 :(得分:3)

如果我理解正确,你可以创建你的枚举有点不同:

enum Type {

    FOO {
        public  String getMe(){
            return "FOO";
        }    
    };

    // force every instance to implement this
    public abstract String getMe();
}