工厂类之所以被实施是因为它们使项目更紧密地遵循SOLID原则。特别是,接口隔离和依赖关系反转的原理。
工厂和接口提供了更多的长期灵活性。它允许更解耦的设计,因此更易于测试。这是为什么您会走这条路的详尽列表:
- 它使您可以轻松引入控制反转(IoC)容器
- 可以模拟接口,这使您的代码更具可测试性
- 更改应用程序时,它为您提供了更大的灵活性(即,您可以创建新的实现而无需更改相关代码)
考虑这种情况。
程序集A(->取决于):
Class A -> Class B
Class A -> Class C
Class B -> Class D
我想将B类移到依赖于组件A的程序集B上。有了这些具体的依存关系,我必须在整个类层次结构中移动大部分。如果使用接口,则可以避免很多麻烦。
大会A:
Class A -> Interface IB
Class A -> Interface IC
Class B -> Interface IB
Class C -> Interface IC
Class B -> Interface ID
Class D -> Interface ID
现在,我可以毫不费力地将B类转移到B组。它仍然取决于程序集A中的接口。
使用IoC容器来解决您的依赖关系,可以为您带来更大的灵活性。更改类的依赖关系时,无需更新对构造函数的每次调用。
遵循接口隔离原理和依赖关系反转原理,我们可以构建高度灵活,分离的应用程序。一旦您使用了其中一种类型的应用程序,您将再也不想回到使用new
关键字的状态了。