抽象工厂模式是否符合接口隔离原则?
一个工厂可以生产多种产品,这生产多种产品的功能是否过度耦合了?假如有一个工厂只需要生产部分产品,它如何来实现工厂接口呢?
在介绍工厂方法模式时,提到该模式的缺点是一个工厂仅能生产一种产品。我很疑惑这为什么被称为缺点?一个工厂接口仅生产一种产品不是高内聚的体现吗?如果真的有工厂需要生产多个产品,实现多个工厂接口不就可以了吗?
你说的这些问题,所以一般开发中经常使用简单工厂模式。
很遗憾的告诉你,设计原则只是一个让我们的编程更具有扩展性的提议。
并不是所有的程序,遵守的设计原则越多越好,使用的设计模式越多越好。
我们应当使它使用起来更加自然!
设计原则其实是在围绕着把可变的部分抽象,把不可变的部分落实的理念展开的。
实际上是用代码的复杂度换取程序的可扩展度,类似于算法中的空间换时间。
其实就是把经常需要发生变化的业务抽象出来,然后用具体使用的类去实现他。这样只需要提供一套基本的实现,在业务发生变化的时候,只需要增加实现就可以了。你可以理解为一个程序实现上的控制反转(IOC)
所以,我们在设计代码的时候,应该关注的是那些需要经常变化的东西,对他们的可扩展性进行维护。
如果是需要横向的扩展,我们选择工厂模式,如果是需要纵向的扩展我们选择抽象工厂。
就好像顺序表与链表的选择一样,我们在实现中抽象,为了更好的实现!