软件开发设计模式的一点个人理解

序言

从最开始买了本《设计模式》吃灰,到自己做了一些软件开发后,又看了一些设计模式的资料,总结一下自己对各种设计模式的理解

创建型模式

1. 单例模式

如果软件运行过程中只存在唯一的实例,就可以使用,访问会很方便,只要inlcude头文件之后,然后调用Class::GetInstance()进行访问即可。

2. 工厂模式

包含三种子模式,

  1. 工厂方法,这个模式就是通过传入一个区分类类型的字符串给工厂,工厂创建对应的类,代码体现就是从new一个类,变为了通过工厂和传入标识创建类。
  2. 简单工厂,这个需要为每一种类创建相应的工厂,可以结合工厂方法一起使用。
  3. 抽象工厂,创建一系列类使用,基本用不到
3. 原型模式

主要在于实现一个clone函数,通过clone来创建对象,从拷贝构造函数生成对象,而不是构造函数,用于构造函数很复杂的类,和需要创建多个对象时使用。

4. 建造者模式

这个顾名思义,最开始看《设计模式》也是这个,讲了一个搭建迷宫的例子,主要用于搭建式的创建,感觉也用不到

结构型模式

1. 桥接模式 https://zhuanlan.zhihu.com/p/703288601

就是一个抽象类,内部组合了另外的抽象类,抽象形状类的内部组合了抽象颜色类,然后进行多种组合即可。

2. 适配器模式

参考语言本身的适配器模式即可,比如C++的queue和stack内部都是由deque进行的适配,虽然这个不涉及面向对象,但所表现的含义一致,核心观点是适配

3. 装饰者模式

主要是为了个一个类做一些额外的功能,通过组合的方式,而不是子类化的添加,核心观点是装饰

4. 代理者模式

通过一个代理类来访问内部的实现类,内部实现类对于外部不可访问,核心观点是代理访问

5. 外观模式

用于为多个子系统提供统一访问的抽象接口,用户只需要通过具体外观类控制接口,不需要了解各个子系统实现,核心观点是简化复杂系统的交互性

6. 享元模式

通过共享方式减少内存开销,但需要多出数据结构维护共享的数据,内存池就是其一种其思想体现,核心观点是共享资源

7. 组合模式 https://blog.csdn.net/jun778895/article/details/141526587

强调部分-整体的层次结构,json的设计是其一种体现。object是容器节点,其他类型是叶子节点,目前涉及不到,仅了解应用场景

行为型模式

1. 策略模式

就是多态

2. 观察者模式

被观察者维护观察者列表和状态,当被观察者内部状态发生变化时通知观察者

3. 中介者模式

降低耦合,负责封装一组对象之间的交互,如一个模块存在一个管理者负责与所有相关类进行通信

4. 状态模式

状态机,对象在不同状态下表现出不同的行为

5. 命令模式

请求封装为一个具体的对象,并提供对请求执行、撤销和重做的支持

6. 模板方法模式

继承和多态的共同体现,子类可以复用基类共同代码,同时实现自定义行为。

7. 迭代器模式

STL迭代器是其体现,提供间接方式访问容器,不需要知道容器的具体实现方式,其用意搜索如下,来自百度AI

  1. ‌访问和操作容器的统一接口
  2. 容器与算法的分离
  3. 灵活性
  4. 避免直接暴露容器内部实现
  5. 弥补语言不足
8. 访问者模式 https://blog.csdn.net/GOLOJO/article/details/139620699

允许在不修改类行为的前提下,定义作用于这个类上的新的操作,注意是直接在这个类上进行操作(调用)
根据实现来看,是可以通过组合的方式直接调用其提供的公有函数,也能实现不同的访问方式,但这种操作是在一个新的类上进行。

9. 解释器模式 https://blog.csdn.net/K1_uestc/article/details/135860748

定义了⼀个语⾔的⽂法,并且建⽴⼀个【解释器】来解释该语⾔中的句子,如编程语言、SQL语句、正则表达式,目前涉及不到,仅了解应用场景

10. 责任链模式 https://blog.csdn.net/L_qingting/article/details/140044903

多个对象可以处理同一个请求,一个请求往责任链发送,不确定具体由谁进行处理时使用

11. 备忘录模式 https://blog.csdn.net/qq_68194402/article/details/141690946

用于恢复过往状态,对象包含保存当前状态和恢复过去状态的方法,过往状态由管理者保存。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

flower980323

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

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

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

打赏作者

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

抵扣说明:

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

余额充值