【发布时间】:2020-04-06 17:54:08
【问题描述】:
我了解工厂模式如何工作的 Java 和 C++ 代码示例,尽管我从未使用 Java 编写过代码,也有近 2 年没有使用 C++ 编写过代码。我只需要理解这个概念就可以遵循一些 API 文档。
我无法理解的是用例。大多数解释说,如果您使用工厂方法根据其参数之一的值创建派生类的对象,则可以更轻松地扩展派生类的数量。在高层次上,我理解这些词,但我还没有找到一个代码示例说明工厂的缺失是一个问题。我能找到的在代码级别显示问题的唯一尝试是here。
示例存在许多问题,如this question 的 cmets 中所述。但是,我想把它们放在一边,专注于工厂要解决的问题。
引用的代码分为 (i) Vehicle 基类的库代码和 (ii) 用于实例化表示(例如)TwoWheeler 或 ThreeWheeler 的特定 Vehicle 子类的客户端代码。问题的解决方案是,如果您将新的子类添加到现有子类的集合中,则无需重新调整任何客户端代码。但是Client 类的例子太琐碎了,看不出问题所在。确切的 Vehicle 子类规范被硬编码到 Client 类定义中。任何使用 Client 创建对象的地方,都可以轻松创建指定子类的对象。
我知道示例必须简单,以便人们可以看穿代码和语法,并理解推理。但所描述的逻辑似乎仍然集中在工厂的机制上,并没有描述对工厂的真正需求。
谁能指出一个在线代码级示例,显示对工厂的实际需求?
我仍在处理我保存的一系列链接,但坦率地说,似乎倾向于在代码级别显示工厂模式的机制,同时仅在叙述级别解释证明需要.希望工厂实际需求的代码级示例仍然很少。
谢谢。
【问题讨论】: