C++设计模式
设计模式的C++实现
朋生的博客
喜欢数理,喜欢编程,热爱研究产品的程序员
展开
-
07 观察者模式
#07 观察者模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include<list>using namespace std;//抽象的英雄 抽象的观察者class AbstractHero{public: virtual void Update() = 0;};//具体英雄 具体观察者class HeroA :public AbstractHero{public: HeroA(){ .原创 2020-10-20 21:47:24 · 125 阅读 · 0 评论 -
05 命令模式
#05 命令模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include<queue>#include<Windows.h>using namespace std;//协议处理类class HandleClientProtocol{public: //处理增加金币 void AddMoney(){ cout << "给玩家增加金币!" << endl; }.原创 2020-10-20 21:46:23 · 114 阅读 · 0 评论 -
04 策略模式
#04 策略模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//抽象武器 武器策略class WeaponStrategy{public: virtual void UseWeapon() = 0;};class Knife : public WeaponStrategy{public: virtual void UseWeapon(){ cout << .原创 2020-10-20 21:45:40 · 82 阅读 · 0 评论 -
03 模板方法模式
#03 模板方法模式# include<iostream>using namespace std;class DrinkTemplate{public: //煮水 virtual void BoildWater() = 0; //冲泡 virtual void Brew() = 0; //倒入杯中 virtual void PourInCup() = 0; //加辅助料 virtual void AddSomething() = 0; //模板方法 void .原创 2020-10-20 21:44:53 · 113 阅读 · 1 评论 -
02 适配器模式
#02 适配器模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include<vector>#include<algorithm>using namespace std;//适配器模式 就是将已经写好的接口,但是这个接口不符合需求//将写好的接口转换成目标接口//这函数我已经写好struct MyPrint{ void operator()(int v1,int v2){ cout .原创 2020-10-20 21:44:03 · 78 阅读 · 0 评论 -
01 外观模式
#01 外观模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//电视机class Television{public: void On(){ cout << "电视机打开..." << endl; } void Off(){ cout << "电视机关闭..." << endl; }};//灯class Ligh.原创 2020-10-20 21:43:13 · 80 阅读 · 0 评论 -
07 代理模式
#07 代理模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//提供一种代理来控制对其他对象的访问class AbstractCommonInterface{public: virtual void run() = 0;};//我已经写好的系统class MySystem : public AbstractCommonInterface{public: virtual .原创 2020-10-20 21:37:05 · 76 阅读 · 0 评论 -
06 单例模式_打印机案例
#06 单例模式_打印机案例#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>using namespace std;class Printer{private: Printer(){ mCnt = 0; }public: static Printer* getInstance(){ return pPrinter; } //提供打印接口 void print.原创 2020-10-20 21:36:21 · 506 阅读 · 0 评论 -
05 单例模式
#05 单例模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class A{private: A(){ a = new A; }public: static A* getInstace(){ return a; }private: static A* a;};A* A::a = NULL;//实现单例步骤//1. 构造函数私有化//2. 增加静态私.原创 2020-10-20 21:35:10 · 78 阅读 · 0 评论 -
04 抽象工厂模式
#04 抽象工厂模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//抽象苹果class AbstractApple{public: virtual void ShowName() = 0;};//中国苹果class ChinaApple : public AbstractApple{public: virtual void ShowName(){ cout <.原创 2020-10-20 21:34:20 · 76 阅读 · 0 评论 -
03 工厂方法模式
#03 工厂方法模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//抽象水果class AbstractFruit{public: virtual void ShowName() = 0;};//苹果class Apple : public AbstractFruit{public: virtual void ShowName(){ cout << "我.原创 2020-10-20 21:33:27 · 194 阅读 · 0 评论 -
02 简单工厂模式
#02 简单工厂模式#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//抽象水果class AbstractFruit{public: virtual void ShowName() = 0;};//苹果class Apple : public AbstractFruit{public: virtual void ShowName(){ cout << "我.原创 2020-10-20 21:32:28 · 57 阅读 · 0 评论 -
04 面向对象设计原则-依赖倒置原则
#01 面向对象设计原则-依赖倒置原则#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//银行工作人员class BankWorker{public: void saveService(){ cout << "办理存款业务..." << endl; } void payService(){ cout << "办理支付业务.." <&.原创 2020-10-20 21:27:14 · 83 阅读 · 0 评论 -
03 面向对象设计原则-合成复用原则
#03 面向对象设计原则-合成复用原则#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//抽象车class AbstractCar{public: virtual void run() = 0;};//大众车class Dazhong :public AbstractCar{public: virtual void run(){ cout << "大众车启动.原创 2020-10-20 21:26:21 · 111 阅读 · 0 评论 -
02 面向对象设计原则-迪米特法则
#02 面向对象设计原则-迪米特法则#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <vector>using namespace std;//迪米特法则 又叫最少知识原则class AbstractBuilding{public: virtual void sale() = 0; virtual string getQuality() = 0.原创 2020-10-20 21:25:49 · 84 阅读 · 0 评论 -
01 面向对象设计原则-开闭原则
#01 面向对象设计原则-开闭原则#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//开闭原则 对扩展开放,对修改关闭,增加功能是通过增加代码来实现,而不是去修改源代码//写一个抽象类class AbstractCaculator{public: virtual int getResult() = 0; virtual void setOperatorNumber(int a, .原创 2020-10-20 21:25:12 · 79 阅读 · 0 评论 -
04 常用算法综合案例
#04 常用算法综合案例#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <map>#include <vector>#include <algorithm>#include <numeric>#include <functional>#include <deque>#include &l.原创 2020-10-20 21:24:31 · 143 阅读 · 0 评论 -
03常用的算法生成算法
#03常用的算法生成算法#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <numeric>#include<vector>#include<algorithm>using namespace std;struct MyPrint01{ void operator()(int val){ cout << val << " "; }};vo.原创 2020-10-20 21:23:58 · 156 阅读 · 0 评论 -
02常用的拷贝和替换算法
#02常用的拷贝和替换算法#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include<algorithm>#include<time.h>using namespace std;struct MyPrint01{ void operator()(int val){ cout << val << " "; }};/.原创 2020-10-20 21:23:01 · 68 阅读 · 0 评论 -
01常用的排序算法
#01常用的排序算法#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include<vector>#include<time.h>#include<list>#include<algorithm>using namespace std;//mergestruct MyPrint01{ void operator()(int val){ cout << v.原创 2020-10-20 21:22:20 · 84 阅读 · 0 评论