![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式(基于C++)
学习一些设计模式以及其记录
Kiopler
这个作者很懒,什么都没留下…
展开
-
设计模式----代理(Proxy)模式
代理模式: 为其他对象提供一种代理以控制对这个对象的访问简单来讲就是用一个对象来使用另一个对象, 来看一下类图:来看一下图的实现代码:#include <iostream>using namespace std;class Subject {public: virtual void Request() = 0;};class RealSubject : public Subject {public: void Request() { cout <原创 2020-10-19 12:12:35 · 129 阅读 · 0 评论 -
设计模式----装饰(Decorator)模式
装饰模式(Decorator): 动态给一个对象添加一些额外的功能,个人感觉像是代理模式升级版为一个对象添加额外的功能也可以通过继承的方式,把功能继承下来,但是如果添加的功能相当多的情况下,继承就显得累赘了而可以通过装饰模式来增加功能。#include <iostream>using namespace std;class Car {public: virtual void show() = 0;};class RunCar : public Car {publi原创 2020-10-19 13:32:06 · 71 阅读 · 0 评论 -
设计模式----原形模式
原形模式类似于拷贝构造函数,提供一种可以直接拷贝原对象的方法,这种方法比较简单,就不画类图了,直接看一下对应代码:#include <iostream>#include <string>using namespace std;class Person {public: virtual Person *Clone() = 0; virtual void Print() = 0;};class CppProgramer : public Person {pub原创 2020-10-18 11:38:55 · 198 阅读 · 0 评论 -
设计模式----建造者(Builder)模式
建造者模式一般用于构造一个非常复杂的类,其内部由多个部分组成。可以使得构建与表示分离并且同样的构建可以构建不同的东西同时隐藏构建细节。看一下这个类图就是一个典型的建造者模式:接下去来看一下具体的实现代码:#include <iostream>using namespace std;class House {public: void setDoor(const string& s) { m_door = s; } void setWall(const原创 2020-10-18 11:01:02 · 166 阅读 · 0 评论 -
设计模式----工厂模式
简单工厂模式特点:不满足封闭开放原则, 即添加新的产品需要修改代码 只能生成某一种产品 通过一个工厂对象可以创建出不同的产品对象 用户与产品耦合度较高来看一下简单工厂的类图:看一下代码的实例:#include <iostream>using namespace std;enum FRUIT { APPLE, BANANA, ORANGE, PEAR};class Fruit {public: virtual void FruitType()原创 2020-10-15 10:49:19 · 64 阅读 · 0 评论 -
设计模式----单例模式
单例模式: 单例模式是为了防止某个类的对象仅需一个,但却不小心实例化多个对象而造成的资源浪费。运用场景: 多线程中只初始化一个socket资源 整个进程中的单个全局资源 大规模系统只需要一个实例运行 单例模式分为两类懒汉式 饿汉式1. 饿汉式懒汉式可能导致线程同步问题。先来看一下饿汉式的实现代码:class Singleton {private: Singleton() { }public: static Singleton* getInstan.原创 2020-10-14 10:43:55 · 113 阅读 · 0 评论 -
设计模式----依赖倒置原则
#include <iostream>using namespace std;class HardDisk {public: virtual void work() = 0;};class Memo {public: virtual void work() = 0;};class Cpu {public: virtual void work() = 0;};class Computer {public: Computer(Cpu *cpu...原创 2020-10-12 11:50:32 · 135 阅读 · 0 评论