design-patterns - 为什么在工厂类上使用工厂方法?
问题描述
所以使用工厂类的优点之一是它将所有实例组织到一个地方,所以如果你想添加一个新类型,你可以很容易地进入工厂类,你不必在文件中搜索,但是在工厂方法模式将所有这些实例化放在不同的子类中。如果您实现工厂方法,代码会不会更难找到?
例子:
//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英语是我的第二语言,如果你们能保持答案简单易懂,将不胜感激。谢谢。
解决方案
推荐阅读
- swift - 如何从 UILabel 段落中删除顶部空间?
- android - 如何将“SliverPersistentHeader”固定在顶部,直到向下滚动后到达“SliverList”的第一项?
- laravel - 基于分层的权限
- javascript - 将 CSS 文件导入 React 组件而不弹出的问题
- angular - 发布 base64 jpg 导致 cors 错误和 400 错误
- python - 尝试使用多个自定义小部件时出现 Python kivy 属性错误
- c# - 为什么在发送 nativemessage 时 Chrome 关闭之前,本机应用程序不显示?
- kubernetes - 为什么来自 prometheus 的指标不会通过 prometheus 适配器传播到自定义指标 api?
- r - 在 R auto.arima 中使用 lib 预测在 Windows 和 MAC 中执行两种不同的解决方案
- python-3.x - 如何匹配两个pytorch张量中的项目