工厂模式:设计模式--工厂模式-CSDN博客
如果想具体了解工厂模式和策略模式,请移步上述博客~
工厂模式与策略模式是两种常见的设计模式,这两种设计模式有几点较相似:
虽然工厂模式和策略模式是两种常见的设计模式,但是它们在设计目的和使用方式上有明显的区别。
1. 目的
-
工厂模式:创建型模式,主要目的是创建对象。它通过工厂方法或工厂类来封装对象的创建过程,使得客户端代码可以在不需要知道具体类的情况下创建对象。工厂模式关注的是如何创建对象,而不是对象的行为。
-
策略模式:行为型模式,主要目的是定义一系列算法或行为,并将每一个算法或行为封装在一个独立的策略类中,使得算法可以相互替换。策略模式关注的是算法或行为的选择和切换,而不是对象的创建。
2. 结构
-
工厂模式:
-
策略模式:
- 策略接口:定义一个公共的算法接口。
- 具体策略类:实现策略接口的具体算法。
- 上下文:持有一个策略对象的引用,并调用策略对象的方法来完成某种功能。
3. 使用场景
-
工厂模式:适用于需要创建多个实例且这些实例具有相同的接口但不同的实现时。例如,在构建系统中,根据配置文件动态创建不同类型的对象(如图形、数据库连接等)。
-
策略模式:适用于需要在运行时动态选择算法或行为时。例如,根据不同的业务需求选择不同的折扣策略、排序算法等。
4. 实现
-
工厂模式:
- 通过工厂类(或工厂方法)来创建对象。
- 客户端代码不需要知道具体的类名,只需知道工厂的接口或方法即可。
- 通过不同的工厂类或方法创建不同的具体产品对象。
-
策略模式:
- 通过定义策略接口和多个具体策略类来实现。
- 上下文类持有一个策略对象的引用,并委托策略对象执行具体的算法或行为。
- 可以在运行时切换策略来改变算法的行为。
5.解决问题
- 工厂模式:创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。
- 策略模式:是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。
工厂模式相当于黑盒子,策略模式相当于白盒子;