小编1d0*_*n30的帖子

避免使用依赖于特定条件的对象创建的If-else代码气味

是否有更好的方法来处理对象(Product)的实例化,这取决于另一个对象类型(Condition)而不是使用if-else配对,instanceof如下面的代码所示?

import java.util.ArrayList;
import java.util.List;

abstract class AbstractProduct {
    private AbstractCondition condition;
    public AbstractProduct(AbstractCondition condition) {
        this.condition = condition;
    }
    public abstract void doSomething();
}

class ProductA extends AbstractProduct {
    AbstractCondition condition;
    public ProductA(AbstractCondition condition) {
        super(condition);
    }

    @Override
    public void doSomething() {
        System.out.println("I'm Product A");
    }
}

class ProductB extends AbstractProduct {    
    public ProductB(AbstractCondition condition) {
        super(condition);
    }   

    @Override
    public void doSomething() {
        System.out.println("I'm Product B");
    }
}

class AbstractCondition { }

class …
Run Code Online (Sandbox Code Playgroud)

java oop design-patterns instanceof java-6

5
推荐指数
1
解决办法
179
查看次数

标签 统计

design-patterns ×1

instanceof ×1

java ×1

java-6 ×1

oop ×1