【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; }运行结果如下:
【小结】
抽象⼯⼚:围绕⼀个超级⼯⼚创建其他⼯⼚。每个⽣成的⼯⼚按照⼯⼚模式提供对象。
抽象⼯⼚模式适⽤于⽣产多个⼯⼚系列产品衍⽣的设计模式,增加新的产品等级结构复杂,需要对原有系统进⾏较⼤的修改,甚⾄需要修改抽象层代码,违背了“开闭原则”。(三)总结与回顾
以上便是本文关于工厂模式的全部内容,接下来简单回顾总结下本文都讲到了什么!!!
工厂模式是一种创建型设计模式,旨在封装对象的实例化过程,使得客户端代码与具体类的实例化过程解耦,从而提高代码的可维护性、可扩展性和灵活性;
优势:
-
解耦: 工厂模式能够将对象的创建和使用分离,降低了客户端与具体类之间的耦合度。
-
可维护性: 当需要修改或扩展具体类时,只需修改工厂类而不影响客户端代码,提高了系统的可维护性。
-
扩展性: 可通过增加新的具体工厂和具体产品来扩展系统,符合开闭原则。
-
代码复用: 工厂模式促进了代码的复用,因为客户端通过接口或基类与工厂类交互,而不直接与具体类交互。
适用场景:
-
对象的创建逻辑复杂: 当对象的创建涉及一系列复杂的步骤或条件判断时,使用工厂模式可以将这些复杂性封装起来。
-
需要根据条件动态创建对象: 当需要根据不同条件来创建不同类型的对象时,工厂模式是一个有效的选择。
-
系统需要更高的灵活性和可扩展性: 工厂模式允许系统在不修改客户端代码的情况下引入新的产品类和工厂类,提供了系统的可扩展性。
到此,本文的内容全部讲解结束。感谢大家的观看与支持!!!
-
- 假设有个⼯⼚能⽣产出⽔果,当客⼾需要产品的时候明确告知⼯⼚⽣产哪类⽔果,⼯⼚需要接收⽤⼾提供的类别信息,当新增产品的时候,⼯⼚内部去添加新产品的⽣产⽅式。
接下来,我们看代码演示:
- 除了原来的产品类和客户端代码外,还需要定义工厂接口、具体工厂类等额外的类。这可能导致系统变得更加复杂,特别是当需要创建多个不同类型的对象时。
但是尽管工厂模式存在上述缺点,但在许多情况下它仍然是一种有用的设计模式。在实际应用中,我们需要权衡使用工厂模式带来的好处和缺点,并根据具体情况进行选择。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!


