首先这个问题我认为是对代码的可扩展性的优化,而不是代码量,因为if之后的逻辑代码是不会减少的。
策略模式
写一个父接口,每个子接口都是一个if的判断,根据构造方法传参,实例的是具体的子接口,其实就是java三大特性之一:多态。
但是有个很明显的问题就是要建很多子类,这么多子类放在一个项目中,不是个好方法。
枚举
建一个枚举类,写一个抽象方法,每个枚举属性重写抽象方法,抽象方法是if后的逻辑。
public enum ItemChoose{
drink(ItmeType.drink) {
@Override
public boolean run() {
// 饮料
}
},
make(ItmeType.make) {
@Override
public boolean run() {
// 合成品
}
},
service(ItmeType.service) {
@Override
public boolean run() {
// 服务品
}
},
single(ItmeType.single) {
@Override
public boolean run() {
// 单品
}
};
public abstract void run();
private ItmeType type;
ItemChoose(ItmeType type) {
this.type = type;
}
}
调用
ItemChoose.valueOf(ItemType.single().name()).run();