[设计模式]
唐火
开始人工智能之路了!!!
展开
-
[设计模式]装饰模式
;原创 2021-06-16 00:10:28 · 64 阅读 · 0 评论 -
[设计模式]观察者模式
代码如下: #include <iostream> #include <list> using namespace std; class AbstractHero { public: virtual void update() = 0; }; class HeroA :public AbstractHero { public: HeroA() { cout << "英雄A正在打BOSS" << endl; } virtual void u.原创 2021-06-16 00:10:31 · 58 阅读 · 0 评论 -
[设计模式]命令模式
代码如下: #include <iostream> #include <queue> #include <Windows.h> using namespace std; class HandleClientProtocol { public: void addMoney() { cout << "给玩家增加金币" << endl; } void addDiamond() { cout << "给玩家增加钻石" &.原创 2021-06-16 00:10:35 · 72 阅读 · 0 评论 -
[设计模式]策略模式
策略模式:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。原创 2021-06-16 00:10:37 · 77 阅读 · 0 评论 -
[设计模式]模板方法模式
模板方法模式: 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模仿方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。原创 2021-06-16 00:10:40 · 78 阅读 · 0 评论 -
[设计模式]适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (将已经写好的,但是不符合需求的接口,转换成目标接口) 代码如下: #include <iostream> #include <vector> #include <algorithm> using namespace std; struct MyPrint { void operator()(int a, int b) { cout <&l原创 2021-06-15 10:40:55 · 67 阅读 · 2 评论 -
[设计模式]外观模式
外观模式:为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。 代码如下: #include <iostream> using namespace std; class Television { public: void on() { cout << "Tv on" << endl; } void off() { cout << "Tv off" << endl; } }; class Light {原创 2021-06-15 10:24:51 · 78 阅读 · 0 评论 -
[设计模式]代理模式
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作业。 代码如下: #include <iostream> using namespace std; //提供一种代理来控制对其他对象的访问 class AbstractCommonInterface { public: virtual void run() = 0; }; class MySystem :public A原创 2021-06-15 10:02:40 · 62 阅读 · 1 评论 -
[设计模式]单例模式(懒汉式,饿汉式)
实现单例步骤: 1.构造函数私有化。 2.增加静态私有的当前类的指针变量。 3.提供静态对外接口,可以让用户获得单例对象。 代码如下: #include <iostream> using namespace std; class A { public: static A* getInstace() { return a; } private: A() { a = new A; } static A* a; }; A* A::a = nullptr; int m原创 2021-06-15 10:02:37 · 63 阅读 · 1 评论 -
[设计模式]抽象工厂模式
抽象工厂模式针对的是产品族,而不是产品等级结构。 产品族:同一产地或者同一产商,功能不同。 产品等级:功能相同,产地或者厂商不同。 代码如下: #include <iostream> using namespace std; class AbstractApple { public: virtual void showName() = 0; }; class ChinaApple :public AbstractApple { public: virtual void showName(原创 2021-06-15 10:02:23 · 64 阅读 · 0 评论 -
[设计模式]简单工厂和工厂方法模式适用场景
简单工厂模式 适用场景: 1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。 2.客户端只知道传入工厂类的参数,对于如何创建对象并不关心。 工厂方法模式 适用场景: 1.客户端不知道它所需要的对象的类。 2.抽象工厂类通过其子类来指定创建哪个对象。 ...原创 2021-06-15 10:02:20 · 153 阅读 · 0 评论 -
[设计模式]工厂方法模式
工厂方法模式缺点: 1.类的个数成倍增加,导致类越来越多,增加维护成本。 2.增加了系统的抽象性和理解难度。 (判断生产什么,又变成让客户端来判断了,简单工厂模式是由工厂判断) 工厂方法模式优点: 1.符合开闭原则。 简单工厂模式+“开闭原则” = 工厂方法模式 代码如下: #include <iostream> using namespace std; class AbstractFruit { public: virtual void showName() = 0; }; class原创 2021-06-15 10:02:16 · 62 阅读 · 1 评论 -
[设计模式]简单工厂模式
简单工厂模式优点: 1.客户端和具体实现解耦 2.对于某些对象的创建过程比较复杂的情况,我们不用考虑这些。 简单工厂模式缺点: 1.简单工厂模式,增加新的功能是通过修改源代码实现,不符合开闭原则。 2.这个工厂(类)职责过重,这个工厂(类)发生问题,会影响很多使用这个工厂(类)的模块 代码如下: #include <iostream> using namespace std; class AbstratctFruit { public: virtual void showName() = 0原创 2021-06-15 10:02:14 · 59 阅读 · 0 评论 -
[设计模式]依赖倒转原则
代码如下: #include <iostream> #include <string> using namespace std; //银行工作人员 class BankWorker { public: void saveService() { cout << "办理存款业务" << endl; } void payService() { cout << "办理支付业务" << endl; } void tra.原创 2021-06-15 10:02:12 · 92 阅读 · 0 评论 -
[设计模式]合成复用原则
合成复用原则:继承和组合,优先使用组合。 这样写,每开一种车,就要弄一个新的Person类。 代码如下: #include <iostream> using namespace std; class AbstractCar { public: virtual void run() = 0; }; class DaZhong :public AbstractCar { public: virtual void run() { cout << "大众车启动" <<原创 2021-06-15 10:02:09 · 121 阅读 · 0 评论 -
[设计模式]迪米特法则
迪米特法则 又叫最少知识法则 代码如下: #include <iostream> #include <string> using namespace std; class AbstractBuilding { public: virtual void sale() = 0; }; class BuildingA :public AbstractBuilding { public: BuildingA():quilty("高品质"){} virtual void sale(原创 2021-06-14 19:20:54 · 109 阅读 · 0 评论 -
[设计模式]开闭原则
开闭原则: 对扩展开放,对修改关闭。 增加功能是提过增加代码来实现的,而不是去修改源代码。 代码如下: #include <iostream> #include <string> using namespace std; class Caculaor { public: Caculaor(int a,int b,string c):a(a),b(b),myOperator(c){} int getResult() { if (myOperator.compare("+原创 2021-06-14 17:21:22 · 126 阅读 · 0 评论