一、定义
将对象的创建和使用分离,将对象创建逻辑封装起来,从而提高代码的可维护性、可扩展性和可复用性。其核心思想是把对象的创建过程封装在一个工厂类或工厂方法中,客户端只需向工厂请求对象,而无需关心对象具体的创建细节。
二、优缺点
1.优点
* 解耦对象创建和使用。将对象的创建逻辑封装在工厂类或工厂方法中,客户端只需调用工厂来获取所需对象,无需了解对象创建的具体细节。这降低了客户端代码与具体对象创建过程之间的耦合度,提高了代码的可维护性。
* 便于代码复用。工厂类可以被多个客户端复用,避免了在多个地方重复编写对象创建的代码。
* 提高代码的可测试性。由于对象的创建逻辑集中在工厂类中,对工厂类进行单元测试相对容易,能够更方便地验证对象创建的正确性。
2.缺点
* 增加系统复杂度。对于简单的应用场景,如果使用工厂模式,会引入额外的工厂类和抽象层,导致代码结构变得复杂,增加了理解和维护的难度。
* 此外,随着产品种类的增加,需要创建大量的具体产品类和具体工厂类,这会使类的数量急剧增加,导致系统的类结构变得复杂,增加了代码的维护成本。
三、实现代码
创建工厂的方法可以有实例方法和静态方法,场景为工厂A和工厂B分别生产A商品和B商品
1.实例方法创建工厂:
示例代码:
运行结果:
2.静态方法创建工厂:
运行结果: