【C++】—— 工厂模式详解
目录
(一)工厂模式的特点
(二)工厂模式分类
1、简单工厂模式
2、工厂方法模式
3、抽象工厂模式
(三)总结与回顾
(一)工厂模式的特点
1、优势
- ⼯⼚模式是⼀种创建型设计模式, 它提供了⼀种创建对象的最佳⽅式;
- 在⼯⼚模式中,我们创建对象时不会对上层暴露创建逻辑,⽽是通过使⽤⼀个共同结构来指向新创建的对象,以此实现创建-使⽤的分离。
2、缺点
尽管工厂模式在许多情况下是一种有用的设计模式,但它也有一些缺点需要考虑:
- 除了原来的产品类和客户端代码外,还需要定义工厂接口、具体工厂类等额外的类。这可能导致系统变得更加复杂,特别是当需要创建多个不同类型的对象时。
但是尽管工厂模式存在上述缺点,但在许多情况下它仍然是一种有用的设计模式。在实际应用中,我们需要权衡使用工厂模式带来的好处和缺点,并根据具体情况进行选择。
(二)工厂模式分类
工厂模式可以分为三种不同的类型:简单工厂模式、工厂方法模式和抽象工厂模式。
1、简单工厂模式
简单⼯⼚模式实现由⼀个⼯⼚对象通过类型决定创建出来指定产品类的实例。- 假设有个⼯⼚能⽣产出⽔果,当客⼾需要产品的时候明确告知⼯⼚⽣产哪类⽔果,⼯⼚需要接收⽤⼾提供的类别信息,当新增产品的时候,⼯⼚内部去添加新产品的⽣产⽅式。
接下来,我们看代码演示:
#include #include #include class Fruit{ public: Fruit(){} virtual void show() = 0; }; class Apple : public Fruit{ public: Apple(){} virtual void show(){ std::cout voice(); return 0; }
运行结果如下:
【小结】
抽象⼯⼚:围绕⼀个超级⼯⼚创建其他⼯⼚。每个⽣成的⼯⼚按照⼯⼚模式提供对象。
抽象⼯⼚模式适⽤于⽣产多个⼯⼚系列产品衍⽣的设计模式,增加新的产品等级结构复杂,需要对原有系统进⾏较⼤的修改,甚⾄需要修改抽象层代码,违背了“开闭原则”。(三)总结与回顾
以上便是本文关于工厂模式的全部内容,接下来简单回顾总结下本文都讲到了什么!!!
工厂模式是一种创建型设计模式,旨在封装对象的实例化过程,使得客户端代码与具体类的实例化过程解耦,从而提高代码的可维护性、可扩展性和灵活性;
优势:
-
解耦: 工厂模式能够将对象的创建和使用分离,降低了客户端与具体类之间的耦合度。
-
可维护性: 当需要修改或扩展具体类时,只需修改工厂类而不影响客户端代码,提高了系统的可维护性。
-
扩展性: 可通过增加新的具体工厂和具体产品来扩展系统,符合开闭原则。
-
代码复用: 工厂模式促进了代码的复用,因为客户端通过接口或基类与工厂类交互,而不直接与具体类交互。
适用场景:
-
对象的创建逻辑复杂: 当对象的创建涉及一系列复杂的步骤或条件判断时,使用工厂模式可以将这些复杂性封装起来。
-
需要根据条件动态创建对象: 当需要根据不同条件来创建不同类型的对象时,工厂模式是一个有效的选择。
-
系统需要更高的灵活性和可扩展性: 工厂模式允许系统在不修改客户端代码的情况下引入新的产品类和工厂类,提供了系统的可扩展性。
到此,本文的内容全部讲解结束。感谢大家的观看与支持!!!
-
- 假设有个⼯⼚能⽣产出⽔果,当客⼾需要产品的时候明确告知⼯⼚⽣产哪类⽔果,⼯⼚需要接收⽤⼾提供的类别信息,当新增产品的时候,⼯⼚内部去添加新产品的⽣产⽅式。
接下来,我们看代码演示:
- 除了原来的产品类和客户端代码外,还需要定义工厂接口、具体工厂类等额外的类。这可能导致系统变得更加复杂,特别是当需要创建多个不同类型的对象时。
但是尽管工厂模式存在上述缺点,但在许多情况下它仍然是一种有用的设计模式。在实际应用中,我们需要权衡使用工厂模式带来的好处和缺点,并根据具体情况进行选择。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。