dev*_*ium 5 c# java design-patterns factory-pattern
目前我已经创建了一个ABCFactory类,它有一个创建ABC对象的方法.现在我想起来了,也许不是有工厂,我可以在我的ABC方法中制作一个静态方法.进行此项更改的专业人士和合作伙伴是什么?它不会导致相同吗?我不认为有其他类继承ABC,但一个人永远不会知道!
谢谢
实际上,如果您想获得工厂类的好处,您需要在其自己的类中使用静态方法。这将允许您稍后创建新的工厂类,或重新配置现有的工厂类以获得不同的行为。例如,一个工厂类可能会创建实现 IFourHoovedAnimal 接口的 Unicorn。您可能编写了一个与 IFourHoovedAnimal 相关的算法,并且需要实例化它们。稍后您可以创建一个新的工厂类来实例化 Pegasus 的工厂类,该工厂类也实现 IFourHoovedAnimal 的工厂类。现在只需使用新工厂即可将旧算法重新用于 Pegasus!为了使这项工作正常进行,PegasusFactory 和 UnicornFactory 必须继承一些公共基类(通常是抽象类)。
因此,您可以看到,通过将静态方法放入其自己的工厂类中,您可以将工厂类替换为较新的工厂类,以重用旧算法。这也有助于提高可测试性,因为现在可以将单元测试提供给创建模拟对象的工厂。
我之前已经为非常小的项目完成了后者(您正在创建实例的类上的静态工厂方法),但这只是因为我需要它来帮助重构一些旧代码,但将更改保持在最低限度。基本上在这种情况下,我分解出一段代码来创建一堆 ASP.NET 控件,并将所有这些控件填充到用户控件中。我想让我的新用户控件基于属性,但旧的遗留代码更容易使用基于参数的构造函数创建用户控件。
因此,我创建了一个静态工厂方法来获取所有参数,然后实例化用户控件并根据参数设置其属性。旧的遗留代码使用此静态方法来创建用户控件,未来的代码将使用“更漂亮”的属性。
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |