工厂设计模式有什么用？
工厂模式并不仅仅是用来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出来。 而这个对构造过程进行选择的逻辑，就是工厂。 当然了，我这里举的例子是InterfaceA，你也可以用AbstractClassA之类的。 工厂在这里面起的作用，就是隐藏了创建过程的复杂度，以配合InterfaceA对那一百个子类的复杂度进行隐藏，这样B只要知道上转型之后的InterfaceA即可，简单清晰。