首页 > 解决方案 > 为什么在工厂类上使用工厂方法?

问题描述

所以使用工厂类的优点之一是它将所有实例组织到一个地方,所以如果你想添加一个新类型,你可以很容易地进入工厂类,你不必在文件中搜索,但是在工厂方法模式将所有这些实例化放在不同的子类中。如果您实现工厂方法,代码会不会更难找到?

例子:

//abstract superclass
abstract ball createBall (string ballType) {
    public void play () {...}
    abstract ball createBall (string ballType);
}

public normalBall extends ball {
    abstract ball createBall (string ballType) {
        if (ballType == "basketball")
            return new normalBasketBall;
        else if (ballType == "football")
            return new normalFootBall;
    }
}

public proBall extends ball {
    abstract ball createBall (string ballType) {
        if (ballType == "basketball")
            return new proBasketBall;
        else if (ballType == "football")
            return new proFootBall;
    }
}

考虑到这有很多子类,并且您想为所有子类添加一个新球,您是否必须将它们全部追捕并在所有子类中进行更改?就像在工厂里一样,你知道所有的对象创建在哪里,然后你就去那里?你也能给我工厂方法比工厂类更多的优势吗?PS英语是我的第二语言,如果你们能保持答案简单易懂,将不胜感激。谢谢。

标签: design-patternsfactory-method

解决方案


推荐阅读