工厂模式原理

工厂模式属于创建型模式,通过工厂模式可实现对复杂对象的在调用处的快速创建(减少复杂对象的创建工作代码量)。
工厂模式中,复杂对象的快速创建调用处不会暴露底层具体的复杂创建逻辑而是通过使用共同的API接口来创建复杂对象。

工厂模式使用:
明确地计划在不同的枚举条件下创建不同的复杂实例时。
工厂模式比较适合于复杂对象的创建。简单对象的创建不推荐使用工厂模式。
使用工厂模式需要引入工厂类文件会增加系统的复杂度。

工厂模式优点:
调用者想在调用处快速创建某个品牌的对象,只要知道品牌名称就可以。
扩展性高,如果想批量增加某种品牌产品,只要扩展某个工厂类就可以。
屏蔽掉品牌产品的底层具体实现过程,调用者只需关心该品牌产品的创建API接口。

工厂模式缺点:
每次增加某种品牌产品时,都需要增加具体的品牌产品类和品牌产品对应的实现工厂类,使得项目中类相关的文件个数成倍增加,在一定程度上增加了项目工程的复杂度,同时也增加了系统具体类的依赖性。

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂(工厂通用基础类)创建其他特定工厂(特定工厂类)。

在抽象工厂模式中,API事件接口是负责创建相关对象的基础工厂,不需要显式指定相关对象的类。
在这里插入图片描述
工厂模式Demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
工厂模式是一种创建型设计模式,它提供了一种封装对象创建过程方法,以便在客户端代码中使用抽象接来实例化具体类型的对象,而不需要直接依赖具体类。 工厂模式的实现原理如下: 1. 定义一个抽象工厂接口:这个接口定义了可以创建不同类型对象的方法。通常会有一个或多个这样的抽象方法,用于创建具体产品。 2. 创建具体工厂类:实现抽象工厂接口,并实现其中定义的创建具体产品的方法。每个具体工厂类负责创建特定类型的产品。 3. 定义抽象产品接口:这个接口定义了产品对象的通用方法。这些方法在所有具体产品中都是一样的。 4. 创建具体产品类:实现抽象产品接口,并提供具体的实现。每个具体产品类对应一个具体工厂类,负责创建该类型的产品。 5. 在客户端代码中使用工厂:客户端代码通过调用工厂的方法来创建对象,而不需要直接使用具体产品类。客户端只需要知道工厂接口和产品接口即可。 工厂模式的优势在于将对象的创建和使用解耦,使得客户端代码更加灵活、可扩展和可维护。当需要添加新类型的产品时,只需要创建对应的具体产品类和具体工厂类,而无需修改客户端代码。 以下是一个简单的工厂模式示例代码: ```java // 抽象产品接口 public interface Product { void operation(); } // 具体产品类A public class ConcreteProductA implements Product { public void operation() { System.out.println("Product A operation"); } } // 具体产品类B public class ConcreteProductB implements Product { public void operation() { System.out.println("Product B operation"); } } // 抽象工厂接口 public interface Factory { Product createProduct(); } // 具体工厂类A public class ConcreteFactoryA implements Factory { public Product createProduct() { return new ConcreteProductA(); } } // 具体工厂类B public class ConcreteFactoryB implements Factory { public Product createProduct() { return new ConcreteProductB(); } } // 客户端代码 public class Client { public static void main(String[] args) { Factory factoryA = new ConcreteFactoryA(); Product productA = factoryA.createProduct(); productA.operation(); Factory factoryB = new ConcreteFactoryB(); Product productB = factoryB.createProduct(); productB.operation(); } } ``` 在上述示例中,抽象工厂接口(Factory)定义了创建产品对象的方法(createProduct),具体工厂类(ConcreteFactoryA、ConcreteFactoryB)实现了该接口并负责创建具体产品对象。抽象产品接口(Product)定义了产品对象的通用方法(operation),具体产品类(ConcreteProductA、ConcreteProductB)实现了该接口并提供具体的实现。客户端代码通过工厂接口来创建具体产品对象,并调用产品对象的方法。这样,客户端代码与具体产品类解耦,可以根据需要更换具体工厂类来创建不同类型的产品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiJunYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值