工厂模式并不仅仅是用来new出一个类的对象的。简单工厂确实如题主的描述所说,是一个工厂对应一个类的关系。
在这里,可以举出一些复杂的例子,与题主的描述不同。假设有代码包A和代码包B,代码包B是代码包A的调用者,A向B暴露接口InterfaceA。在A的内部结构中,实现了InterfaceA的有ClassA1,ClassA2,ClassA3,……ClassA100。但是B并不关心这些,因为对于B来说,A的功能只有一个,就是InterfaceA。这个时候,B想要使用一个InterfaceA的实现,想要new一个出来,但又不想与代码包A中的复杂的构造逻辑耦合,怎么办?只能向代码包A中传递参数,交给代码包A自己选择到底是那个ClassA1还是A100被new出来。而这个对构造过程进行选择的逻辑,就是工厂。
作者:兔子先生
链接:https://www.zhihu.com/question/24843188/answer/29171607
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。