设计模式之介绍

前言

本人一直以来都在学习C++,也写了不少的代码,对设计模式也是一知半解,一直无法熟练使用,因此想系统性学习相关知识,并以此为记录。欢迎大家批评指正。

什么是设计模式?

设计模式是指在软件开发种,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案。简单的说,设计模式是一套经过实践总结出来的、被反复使用的、能够提高软件设计质量的经验。它描述了在特定情境下,应该如何解决某类问题,并提供了一个通用的解决方案。设计模式不是具体的代码实现,而是一种思路和指导性的模板,可以帮助开发人员在软件设计中更好地解决问题。

C++ 中的设计模式包括创建型模式、结构型模式和行为型模式。创建型模式主要关注如何创建对象,包括工厂模式、抽象工厂模式、单例模式等;结构型模式关注如何组合类和对象以形成更大的结构,包括适配器模式、装饰器模式、代理模式等;行为型模式关注对象之间的通信和协作,包括观察者模式、迭代器模式、策略模式等。这些模式在实际开发中都有广泛的应用。

设计模式是怎么来的?

C++ 的设计模式来源于 1994 年 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四位软件工程师出版的《设计模式:可复用面向对象软件的基础》一书。这本书系统地介绍了 23 种经典的设计模式,并提供了示例代码、应用场景和注意事项等方面的详细说明。

这本书的作者们通过对实践中常见的软件设计问题进行总结和归纳,提出了一些通用的解决方案,即设计模式。这些模式在实际开发中被广泛使用,不仅能够提高代码的可读性和可维护性,还能够减少代码的重复性,提高开发效率。设计模式成为了面向对象软件开发中的重要组成部分,并逐渐被扩展到其他编程语言和领域中。

设计模式解决了什么问题?

前提:具体需求既有**稳定点**,又有**变化点**;
期望:修改少量的代码,就可以适应需求的变化
比喻:整洁的房间,有只好动的猫,怎么保证房间的整洁?(把猫关在笼子里)

C++ 设计模式主要解决了软件开发中常见的一些设计问题,包括:
对象的创建和管理:创建型模式(如工厂模式、单例模式)可以帮助我们更好地组织对象的创建和管理,避免重复代码,提高代码的复用性和可维护性。
对象之间的通信和协作:行为型模式(如观察者模式、策略模式)可以帮助我们更好地组织对象之间的通信和协作,使得系统更加灵活和可扩展。
类和对象的组合:结构型模式(如适配器模式、装饰器模式)可以帮助我们更好地组合类和对象以形成更大的结构,提高代码的复用性和可维护性。
通过使用设计模式,我们可以避免重复代码,提高代码的复用性和可维护性,使得系统更加灵活和可扩展。同时,由于设计模式已经被广泛应用和验证,使用设计模式也可以提高代码的可读性和可靠性,降低软件开发和维护的风险。

设计模式基础是什么?

面对对象的思想:

封装:隐藏实现细节,实现模块化。
继承:无需修改原有类的情况下,通过继承实现对功能的扩展。
多态:
		静态多态(函数重载)
		动态多态(继承中的函数重写)

设计原则:

依赖倒置:
高层模块不应依赖底层模块,两者都应该依赖抽象;
抽象不应该依赖具体实现,具体实现应该依赖于抽象;
开闭原则(封装与多态):对扩展开发,对修改关闭
面向接口(封装)
封装变化点(封装与多态)
单一职责(封装)
里氏替换(多态)
接口隔离
组合优于继承
最小知道原则(封装)

如何学习设计模式?

在现有设计模式的基础上,扩展代码
做功能抽象,如何选择设计模式
学习步骤:
		该设计模式解决了什么问题?分析出稳定点与变化点
		该设计模式的代码结构是什么?
		符合哪些设计原则?
		如何在已有代码上面扩展代码?
		该设计模式有哪些典型应用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值