模式设计
湿毒清胶囊
这个作者很懒,什么都没留下…
展开
-
设计模式——建造者模式(C++)——建造小人
#include <iostream>using namespace std;class PersonBuilder{ public: virtual void BuildHead()=0; virtual void BuildBody()=0; virtual void BuildArmLeft()=0; virtual void BuildArmRight()=0; virtual void B原创 2020-11-18 14:50:27 · 170 阅读 · 0 评论 -
设计模式——建造者模式(C++)——算法实现
建造者模式建造者模式:使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。意图: 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决: 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算原创 2020-11-18 14:49:03 · 105 阅读 · 0 评论 -
设计模式——外观模式(C++)——投资基金
#include <iostream>using namespace std;//具体股票类class StockA{ public: void Sell() { cout<<"股票1卖出"<<endl; } void Buy() { cout<<"股票1买入"<<endl; }};原创 2020-11-15 19:02:46 · 136 阅读 · 0 评论 -
设计模式——外观模式(C++)——算法实现
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。何时使用:1.在设计初期阶段,原创 2020-11-15 19:00:58 · 103 阅读 · 0 评论 -
设计模式——模板模式(C++)——考试抄错会做也白搭
#include <iostream>using namespace std;//TestPaper是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,他给出了一个顶级逻辑的骨架,//而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。class TestPaper{ public: //模板方法,给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。 void Quetion1()原创 2020-11-14 10:47:56 · 121 阅读 · 0 评论 -
设计模式——模板模式(C++)——算法实现
模板模式在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决: 一些方法通用,却在每一个子类都重新写了这一方法。何时使用: 有一些通用的方法。如何解决: 将这些通用算法抽象出来。关键代码: 在抽象类实现,其他步骤在子类实现。优点:1、封装不变部原创 2020-11-14 10:45:27 · 172 阅读 · 0 评论 -
设计模式——原型模式(C++)——简历复印
//原型模式就是让对象拥有自我拷贝的功能,方便备份对象数据或者创建对象时设置过多的参数。#include <iostream>#include <string>using namespace std;class Prototype{ public: string name; string sex; string age; string timeArea; string company原创 2020-11-13 14:30:15 · 147 阅读 · 0 评论 -
设计模式——原型模式(C++)——算法实现
原型模式原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。原型模型其实就是从一个对象再创建另外一个可定制对象,而且不需知道任何创建的细节意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决: 在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模原创 2020-11-13 14:27:12 · 212 阅读 · 0 评论 -
设计模式——工厂模式(C++)——雷锋依然在人间
#include <iostream>using namespace std;//抽象产品角色:它是具体产品继承的父类或者是实现的接口。class LeiFeng{ public: virtual void Sweep() { cout<<"扫地"<<endl; } virtual void Wash() { cout<原创 2020-11-12 17:17:43 · 147 阅读 · 0 评论 -
设计模式——工厂模式(C++)——算法实现
工厂模式: 对简单工厂模式的进一步抽象和推广,保持了简单工厂模式的优点,而且克服了简单工厂模式的缺点,可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。意图: 把对象实例化的动作提取出来,和主项目的过程或者方法的依赖关系进行解耦,通过这种方式来使整个项目、工程能够有更好的扩展性和维护性。工厂模式就是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。主要解决: 构造工厂对象,将构造的工作交给工厂。在工厂对象里针对具体实现new。换句话说,并不是解决垃圾而是将原创 2020-11-12 17:14:23 · 116 阅读 · 0 评论 -
设计模式——代理模式(C++)——为别人做嫁衣
代理模式: 为其他对象提供一种代理以控制对这个对象的访问#include <iostream>using namespace std;class SchoolGirl{ public: string name; void Setname(string n) { this->name = n; }};//GiveGift类,定义了Pursuit和Proxy的公用接口,这样就在原创 2020-11-11 15:44:42 · 130 阅读 · 0 评论 -
设计模式——代理模式(C++)——算法实现
代理模式: 为其他对象提供一种代理以控制对这个对象的访问意图: 为其他对象提供一种代理以控制对这个对象的访问。主要解决: 在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用: 想在访问一个类时做一些控制。如何解决: 增加中间层。关键代码: 实现与被代理类组合。优点:1、职原创 2020-11-11 15:41:24 · 107 阅读 · 0 评论 -
设计模式——装饰者模式(C++)——小菜扮靓
#include <iostream>using namespace std;//Person作为父类,定义一个对象接口,也定义一个具体对象,也可以给这些对象动态地添加职责。。class Person{ private: string name; public: Person() { } Person(string n) { this->na原创 2020-11-11 10:58:51 · 101 阅读 · 0 评论 -
设计模式——装饰者模式(C++)——算法实现
/*装饰者模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。如何解决:将具体原创 2020-11-11 10:22:23 · 157 阅读 · 0 评论 -
设计模式——策划模式(C++)——商场收费系统
//用策略模式实现商场收费系统#include <iostream>using namespace std;//现金收费抽象类//抽象产品:抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口class CashSuper{ public: virtual double acceptCash(double money)=0; //纯虚函数:在函数原型后加"=0"};//具体产品:具体产品角色(子类)是创建目标,所有创建的对象都充当这个原创 2020-11-09 19:48:10 · 432 阅读 · 0 评论 -
设计模式——策划模式(C++)——算法实现
/*策划模式意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何解决:将这些算法封装成一个一个的类,任意地替换。关键代码:实现同一个接口。*/#include <iostream>using namespace std;//抽象算法类:定义所有支持的算法的公共接口class Strategy{原创 2020-11-09 18:57:42 · 201 阅读 · 1 评论 -
设计模式——简单工厂模式(C++)——商场收费
//用简单工厂模式实现商场收费策略#include <iostream>using namespace std;//现金收费抽象类//抽象产品:抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口class CashSuper{ public: virtual double acceptCash(double money)=0; //纯虚函数:在函数原型后加"=0"};//具体产品:具体产品角色(子类)是创建目标,所有创建的对象都充原创 2020-11-09 18:46:04 · 166 阅读 · 0 评论 -
设计模式——简单工厂模式(C++)——计算器
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。原创 2020-11-08 15:26:08 · 426 阅读 · 1 评论