![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
丶星下灯
此人很水
展开
-
设计模式之适配器模式
将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。用vector容器中的for_each()举例子注意:上述代码会报错原因:仿函数中的形参有两个,而系统只能识别一个。解决:但是我们的需求就是要两个参数,此时就需要一个适配器。定义目标函数,我要适配成如下结构的仿函数适配器如下所以使用时直接调用适配器的仿函数就行完整代码如下:......原创 2022-06-27 19:25:16 · 109 阅读 · 0 评论 -
设计模式之外观模式
外观模式就是将一个复杂的子类系统抽象到同一个接口进行管理外界只需要通过此接口与子类系统进行交互,不需要直接与复杂的子类系统进行交互外观模式属于结构型模式1、实现KTV模式:打开电视,关灯,音响打开,麦克风打开,dvd打开2、实现游戏模式:电视打开,音响打开,游戏机打开...原创 2022-06-26 14:35:14 · 612 阅读 · 0 评论 -
设计模式之代理模式
为其他对象提供一种代理,用来控制对象的访问。在某些情况下,一个对象不适合或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。如上:代理类MySystemProxy 可以控制MySystem 对象的访问常用于 代理服务器 的设计...原创 2022-06-16 15:27:00 · 143 阅读 · 0 评论 -
面向对象单例模式
单例模式: 一个类只能创建一个对象。将构造方法私有化,提供一个静态方法将创建好的对象返回给调用者。每当调用静态方法获取的时候才去创建一个对象出来,所以叫懒汉式。饿汉式的构造先于main函数执行,提前就创建好了一个对象等着获取,所以叫饿汉式。单例模式在整个程序中只生成一个对象在堆区,在程序结束的时候,系统会自动回收,所以不需要考虑释放内存。如果非要手动释放,那就写个私有的析构吧。懒汉模式: 在调用者调用静态获取对象的方法时,多线程情况下有 if 判断都为 NULL的可能,那么就创建了不止一个对象,违背了原创 2022-06-15 20:11:17 · 147 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式针对的是对产品族,而不是产品等级结构。产品族: 生产一类产品的工厂。产品等级: 同一类产品中具体不同的产品。比如水果类里面由苹果和香蕉,水果就是产品族,苹果香蕉就是产品等级。......原创 2022-06-14 19:12:57 · 59 阅读 · 0 评论 -
简单工厂模式+工厂方法模式
1、客户端与具体实现类解耦。2、对于某些创建对象的过程比较复杂的情况。只需给工厂传参,然后工厂根据传入的参数返回对象,无需了解对象创建的具体过程。缺点:1、简单工厂模式在增加新功能时是通过修改源代码来实现的,这不符合开闭原则。2、工厂类职责过重,不符合单一职责原则。所以简单工厂模式并不在23种设计模式之列代码示例工厂的使用只需要创建一个工厂,通过传参给工厂返回不同的对象,用户不需要了解具体对象的创建过程,对象的创建都是工厂来完成的。对于工厂类而言,如果要增加新的功能,就需要修改工厂类,这违背了开闭原创 2022-06-13 19:45:59 · 164 阅读 · 0 评论 -
设计模式基本概念
设计模式共有23种,它们分为三大类:注意:简单工厂模式不在23种之列,加上简单工厂模式共24种。设计模式基础是多态。(目的都是为了 高内聚,低耦合)重点原则代码示例1、开闭原则(OCP):这不是将简单问题复杂化了吗?没错,确实如此,但是我们这个程序简单,假设一个及其复杂的程序,源码的实现非常复杂,后期维护起来,开闭原则就能体现出它的巨大优势2、依赖倒转原则(DIP)传统过程设计倾向于使高层次的模块依赖于低层次的模块,抽象层次依赖于具体层次。这样设计,高层、中层、底层的耦合度极高。很容易导致牵一发而原创 2022-06-10 11:48:19 · 284 阅读 · 0 评论