java里减少if else的例子

package com.csdn;

interface Animal {
    void speak();
}

class Dog implements Animal {
    @Override
    public void speak() {
        System.out.println("dog speak.");
    }
}

class Cat implements Animal {
    @Override
    public void speak() {
        System.out.println("cat speak.");
    }
}

class Pig implements Animal {
    @Override
    public void speak() {
        System.out.println("pig speak.");
    }
}

public class NoIfElse {
    // 比方说现在有个需求,
    // 通过state状态来判断那种动物叫
    // 0让狗叫,1让猫叫,2让猪叫

    /**
     * 方法1
     */
    private void animalSpeak(int state) {
        Animal[] animals = { new Dog(), new Cat(), new Pig() };
        animals[state].speak();
    }

    /**
     * 方法2,没有用到Animal接口
     */
    private void animalSpeak2(int state) {
        if (state == 0) {
            new Dog().speak();
        }
        if (state == 1) {
            new Cat().speak();
        }
        if (state == 2) {
            new Pig().speak();
        }
    }

    public static void main(String[] args) {
        NoIfElse t = new NoIfElse();
        int state = 1;

        t.animalSpeak(state);

        t.animalSpeak2(state);
    }
}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容