![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
知途。。。
这个作者很懒,什么都没留下…
展开
-
设计模式--观察者模式
定义对象间一对多的依赖关系,使得每一个对象状态改变,则所有依赖他的对象都会得到通知观察者模式 : 秘书站在门口,看见老板来了,发出信号,老板来了,,然后 员工通过观察秘书信号停止打游戏#include <iostream>#include <string>#include <list>using namespace std;class Secretary;//观察者class PlayGamerPeople{public: PlayGame原创 2020-07-12 20:15:25 · 134 阅读 · 0 评论 -
设计模式--责任链模式
责任链模式:有四个任务A,B,C,D 客户端将任务交给A,A完成后将任务交给B,B完成后将任务交给C.....本质:链表的实现#include <iostream>using namespace std;class makeCar{public : virtual void makeCarHandle() = 0; makeCar *setNextHandle(makeCar *handle) { if (handle != nullptr) { this-原创 2020-07-08 20:19:58 · 128 阅读 · 0 评论 -
设计模式--命令模式
命令模式是将一个动作分解为 请求命令者,管理命令者,执行命令者eg: 医生看病,这个动作分解为 患者提交看病申请给 护士,护士 负责管理申请, 同样负责将病历下发给医生,最后医生看病#include <iostream>#include <list>using namespace std;//执行者抽象类class doctors{public: virtual void trea() = 0;};//执行者实现类class NoseDoctors :p原创 2020-07-07 20:56:23 · 497 阅读 · 0 评论 -
设计模式--模板模式
模板模式:抽象类中规定好 抽象方法(具体实现由子类去实现),并规定好抽象方法的调用顺序#include <iostream>using namespace std;class makeCar{public: //抽象方法 virtual void makeHead() = 0; virtual void makeBody() = 0; virtual void makeTail() = 0; //抽象方法的调用顺序 void getCar() { makeHead()原创 2020-07-06 19:59:25 · 909 阅读 · 0 评论 -
设计模式--桥接模式
将抽象部分和实现部分解耦合,使得他们可以独立变化 eg:小汽车 都需要发动机,而发动机又多种多样,即多种多样的车安装各种类型的发动机#include<iostream>using namespace std;class Engine{public: virtual ~Engine() { } virtual void installEngine() = 0;};class A_Engine : public Engine{public: virtual ~.原创 2020-07-02 20:38:23 · 124 阅读 · 0 评论 -
设计模式--适配器模式
将已有的接口通过适配器转换成 新的需求所需要的接口#include <iostream>using namespace std;//新的需求所需要的接口class current18v{public: virtual void useCurrent18v() = 0; virtual ~current18v() { }};//已有的接口class current220v{public: void useCurrent220v() { cout <&原创 2020-07-01 20:37:55 · 77 阅读 · 0 评论 -
设计模式--装饰模式
动态的为某个对象增加额外的功能#include <iostream>using namespace std;class Car{public: virtual void showFunc() = 0; virtual ~Car() { }};class smallCar :public Car{public: void showFunc() { cout << "我能跑" << endl; }};class flyCar原创 2020-07-01 20:16:17 · 104 阅读 · 0 评论 -
设计模式--代理模式
特点:抽象角色:声明真实对象和代理对象的共同接口。代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。使用场景:代理模式就是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到原创 2020-06-29 20:19:17 · 6282 阅读 · 0 评论 -
设计模式--原型模式
一个复杂的对象具有自我复制功能,统一一套抽象接口注意:深拷贝浅拷贝问题#include <iostream>#include <string>using namespace std;class Person{public: virtual Person *clon() = 0; virtual void printT() = 0;};class man : public Person{public: man() { _name = "";原创 2020-06-28 20:16:51 · 97 阅读 · 0 评论 -
设计模式--建造者模式
**将对象的构建和对象的表示分离开来优势:对于使用者来说只需要选择不同类型的产品按照指定的框架就可以得到产品**#include<iostream>#include <string>using namespace std;//想要构建的产品的各个零件组成类class house{public: void setDoor(const string &door) { _door = door; cout << door <<原创 2020-06-27 20:30:36 · 128 阅读 · 0 评论 -
设计模式--抽象工厂类
工厂模式:一个工厂只生产一种产品抽象工厂模式:一个工厂生产一类产品#include <iostream>using namespace std;//抽象产品类class FruitObject{public: virtual void getFruit() = 0;};//抽象工厂类class FactoryObject{public: virtual FruitObject *createApple() = 0; virtual FruitObject *c原创 2020-06-26 11:13:03 · 124 阅读 · 0 评论 -
设计模式--工厂模式
工厂模式:在简单工厂模式下进一步解耦合工厂类,即将工厂分门别类,每个产品对应一个具体的工厂每增加一个产品,就增加一个工厂类#include<iostream>using namespace std;//水果抽象类class FruitObject{public: virtual void getFruit() = 0;};//苹果实现类class apple : public FruitObject{public: void getFruit() { cou.原创 2020-06-24 20:39:28 · 227 阅读 · 0 评论 -
设计模式--简单工厂模式
简单工厂模式:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类(本质是多态实现) 优点:不需要用户自己去创建实例,工厂类会代替用户创建 缺点:每次增加新的产品都需要修改工厂类,不符合开闭原则#include<iostream>using namespace std;//抽象类class Fruit{public: virtual void getFruit() = 0;};//具体实现类class apple : public原创 2020-06-24 20:03:03 · 120 阅读 · 0 评论 -
设计模式--单例模式(以及多线程下懒汉式优化)
单例模式:保证某个类在项目中只能实例化一次,减小资源的浪费懒汉式:在调用静态方法的时候分配内存饿汉式:直接分配内存懒汉式#include <iostream>using namespace std;/* 单例模式:保证某个类在项目中只能实例化一次,减小资源的浪费*/class socketer{private: socketer() { cout << "socketer执行" << endl; } ~socketer() {原创 2020-06-22 20:12:47 · 176 阅读 · 0 评论 -
设计模式--依赖倒转原则
依赖倒转原则:依赖于抽象类(接口类),不依赖于具体实现类即:高层业务逻辑依赖抽象类,具体实现类 依赖于抽象业务逻辑高层逻辑为:软件设计具体需求(eg:制造一台电脑)抽象层为:很多抽象类(eg:电脑由CPU,显卡,硬盘,内存条等组成,此部分为抽象类)具体实现类:实现高层逻辑的业务类(eg:具体的CPU,,显卡,硬盘,内存条等)#include<iostream>using namespace std;//抽象类class Cpu{public: virtual void do原创 2020-06-21 20:29:30 · 147 阅读 · 0 评论 -
设计模式--开闭原则
开闭原则核心:对扩展开放,对修改关闭即:软件增加或修改需求时,通过增加代码来实现功能,对原有功能模块代码不进行任何改动#include <iostream>using namespace std;class BankWorker{public: virtual void doSomeThing() = 0;};class BankSave : public BankWorker{public: void doSomeThing() { cout <<原创 2020-06-21 11:09:15 · 101 阅读 · 0 评论 -
软件设计模式--类与类之间的关系
注:以下示例只是为了说明 类与类之间的关系可能不太合理,请各位杠精不要抬杠1.依赖关系:一个类是另一个类的成员变量或者返回值,UML图中使用带箭头得虚线表示(eg:小明开车去上班)#include <<iostream>>using namespace std;class Car{}class XiaoMing{public: void goWork(Car *p) { } Car *goWork() { }}int main(){r原创 2020-06-20 20:35:15 · 492 阅读 · 0 评论