设计模式简单工厂、工厂方法、抽象工厂的区别
时间: 2023-10-07 13:09:32 浏览: 169
C++ 设计模式:简单工厂、工厂方法、抽象工厂练习代码
这三种工厂模式都是用来创建对象的,但它们的实现方式略有不同:
1. 简单工厂模式:由一个工厂类根据传入的参数,决定创建并返回哪种产品类的实例。它的优点在于工厂类集中了所有产品的创建逻辑,客户端只需要知道工厂类即可,不需要关心具体的产品类。但缺点是当需要添加新的产品时,需要修改工厂类的代码,违反了开闭原则。
2. 工厂方法模式:将工厂类抽象成接口或抽象类,每个具体的产品类都对应一个具体的工厂类。客户端需要知道具体的工厂类和产品类,但每个工厂类只负责创建对应的产品,符合单一职责原则。添加新的产品时,只需要添加一个新的具体产品类和它对应的工厂类即可,不需要修改已有代码。
3. 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。每个具体的工厂类可以创建一组相关的产品类。客户端需要知道具体的抽象工厂类和抽象产品类,但不需要知道具体的实现类。添加新的产品族时,需要添加一个新的抽象产品类和对应的具体产品类,以及一个新的抽象工厂类和对应的具体工厂类,不需要修改已有代码。
简单来说,简单工厂模式是在一个工厂类中创建所有产品;工厂方法模式是将工厂类抽象成接口或抽象类,每个具体产品对应一个具体工厂类;抽象工厂模式是提供一个抽象工厂类,每个具体工厂类可以创建一组相关的产品。
阅读全文