【发布时间】:2014-04-08 21:54:01
【问题描述】:
我正在努力思考工厂设计模式的用处。
与此设计模式的许多实现一样(即http://msdn.microsoft.com/en-us/library/ee817667.aspx),在 Main() 中有一个 switch 语句,它探测一个字符串以决定创建哪个 ConcreteComputerFactory(稍后发送到 ComputerAssembler.Assemble(ComputerFactory factory) 方法)。
我看到问题的方式: 1. 工厂 (Main()) 的用户“知道”根据设计模式的定义应该隐藏的具体工厂实现。 2. 每当引入新的concreteComputerFactory 时,抽象就不成立了!我们必须去客户端 (Main()) 添加另一个 if/case 语句。
主张: 将 if/switch 语句/s 移至 ComputerAssembler。 (这有一个小问题,现在 ComputerAssembler 有 2 个原因需要更改:a. 与创建相关的整体内容 b. 添加新的 ConcreteComputerFactory。但是:这肯定比在客户端(Main)中要好得多)
我假设我还没有完全理解这个想法。我想听听你为什么我指定的问题是不正确的,为什么我的提议不是一个更好的主意
谢谢:)
【问题讨论】:
标签: oop design-patterns