设计模式
文章平均质量分 61
yxh_1_
这个作者很懒,什么都没留下…
展开
-
C++实现设计模式——门面(Facade)模式
C++实现设计模式——门面(Facade)模式Facade模式定义(Facade)门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。Facade模式例子日常生活中其实很多地方都用到了门面模式的思想:比如包工头,他担任的就是一个门面角色,他的出现不需要我们再去个木匠,瓦匠,油漆匠打交道,我们只需要和他进行对接。 再比如现在的很多接待员,我们和接待员打交道,然后接待员再去和对应的部门进行沟通。这些都是原创 2021-04-29 17:07:11 · 166 阅读 · 0 评论 -
C++实现设计模式——享元(Flyweight)模式
C++实现设计模式——享元(Flyweight)模式享元模式定义运用共享技术有效地支持大量细粒度对象的复用,系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用,由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,是一种结构型模式。享元模式结构Flyweight(抽象享元类):一个接口或抽象类,声明了具体享元类的公共方法。 ConcreteFlyweight(具体享元类):实现了抽象享元类,其实例称为享元对象。 UnsharedConcre原创 2021-04-29 16:42:12 · 694 阅读 · 0 评论 -
C++设计模式——代理(Proxy)模式
C++设计模式——代理(Proxy)模式代理模式定义Proxy模式根据使用场景可以分为下面几类: 智能指针:智能指针主要通过代理一个对象的时候,会记录引用的次数,当次数为0时释放对象 保护代理:在对一个对象访问的时候,添加对不同权限的处理逻辑,这个也是交给代理做的 远程代理:为网络上的对象创建一个局部对象,所有网络通讯操作交给代理去做,让客户可以会忽略这些被代理的对象是不是远程的 虚拟代理:创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完原创 2021-04-28 20:09:12 · 1021 阅读 · 0 评论 -
C++实现设计模式——装饰者(decorator)模式
C++实现设计模式——装饰者(decorator)模式装饰者(decorator)模式定义动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。不改变接口的前提下,增强所考虑的类的性能。何时使用1)需要扩展一个类的功能,或给一个类增加附加责任。2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。3)需要增加一些基本功能的排列组合而产生的非常大量的功能。注意:装饰者模式的根本是装饰而不是改变接口,原先调用的什...原创 2021-04-25 20:28:48 · 1060 阅读 · 0 评论 -
C++实现设计模式——组合(Composite)模式
C++实现设计模式——组合(Composite)模式组合模式定义把一组相似的对象当作一个单一的对象,它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式应用场景希望客户端可以忽略组合对象与单个对象的差异时; 对象层次具备整体和部分,呈树形结构(比如树形菜单,公司组织架构等) 有一个或多个共同特点。它们有一个主线。组合模式举例组合模式在日常中其实经常遇到,只是有时候我们不知道这种就是组合模原创 2021-04-25 17:01:33 · 1200 阅读 · 0 评论 -
C++实现设计模式——适配器(Adapter)模式
C++实现设计模式——适配器(Adapter)模式适配器模式定义Adapter(适配器模式)属于结构型模式,结构性模式关注的是如何组合类与对象,以获得更大的结构,我们平常工作大部分时间都在与这种设计模式打交道。意图:将一个类的接口转换成客户希望的另一个接口。Adapter 模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 适配器应用场景 新旧 API 兼容。(大型使用库的升级) 三方包适配。 统一多个类的接口。(比如数据库ORM)两种模式适配器介绍适配器模式有两种原创 2021-04-24 13:42:40 · 3314 阅读 · 0 评论 -
C++实现开发模式——Bridge(桥接)模式
C++实现开发模式——Bridge(桥接)模式桥接模式是什么?桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。桥接(Bridge)模式的优点是:抽象与实现分离,扩展能力强 符合开闭原则 符合合成复用原则 其实现细节对客户透明缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。为什么要用桥接模式原创 2021-04-24 09:52:43 · 736 阅读 · 0 评论 -
c++实现设计模式——Prototype模式
c++实现设计模式——Prototype模式什么是Prototype模式Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone),Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。 结构图 为什么用Prototype模式什么是Prototype模式,我相信网上有一堆的解释,但是我们要理解为什么要用,用了有什么好处,这才是最重要的,先说结论,什么场景下要用: 要创建很多个对象 每个对象属性很类似,只有少量区别,如果一个是鸡一个是.原创 2021-04-23 18:12:41 · 910 阅读 · 0 评论 -
C++实现设计模式——Builder模式
C++实现设计模式——Builder模式建造者模式定义建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。举例举一个通俗的例子:我们大家都玩游戏吧,每个角色会有很多属性,即构造参数,有一些是构造必需参数,如id,name,有一些是可以用默认的值,比如hp,level等原创 2021-04-23 15:48:34 · 2776 阅读 · 0 评论 -
c++ 实现设计模式——单例(Singleton)模式
c++ 实现设计模式——单例(Singleton)模式单例模式的特点单例类只能有一个实例 单例类必须自己给自己创建唯一的实例 所有对象通过提供的一个staitc的接口instance来获得这个唯一的实例单例模式使用场景举例各种池的对象,比如进程池,线程池,数据库连接池,这些情况只能创建一个实例 工厂模式的工厂对象 负载均衡模型里面的任务分配器这些实例都有一个共同的特点,那就是通过这些实例可以操作其它对象,它是一个公有的,大家都会来调用举个简单的代码例子#include <i原创 2021-04-22 18:27:26 · 223 阅读 · 0 评论 -
C++实现设计模式——工厂模式
C++实现设计模式——工厂模式简单工厂模式简单工厂模式举个直白的例子就是,好比一个手机制造工厂,里面有几条手机制造生产线,我们只要给了对应的材料,就能制造出对应的手机。简单的用代码实现如下:#include <iostream>using namespace std; enum phoneType { miType = 0, huaweiType, oppoType};class phone { public: v.原创 2021-04-22 16:40:03 · 238 阅读 · 0 评论 -
为什么用工厂模式,工厂模式有什么作用
为什么用工厂模式,工厂模式有什么作用降低模块间的耦合度 (这也是最关键的一点)举个例子:现在有两个模块A和B,同时模块A中又有很多子模块继承与模块A,叫做module_A1,module_A2,module_A3,module_A4,module_A5....module_An,这些子模块都有一个共同的接口interface,此时模块B要调用模块A子模块的方法,正常是不是要写成 module_A1->interface()或者 module_An->interface(),这时候模块B原创 2021-04-22 13:42:08 · 1065 阅读 · 0 评论