
设计模式
wonengguwozai
欢迎爱技术的同行交流
展开
-
UML类图基础整理
UML类图基础整理缘起:本人在做算法产品化过程中意识到类图在程序架构设计中的重要性。此外,一个好的程序架构设计离不开设计模式的使用,设计模式的描述同样也离不开类图的表示。基础表示泛化:表示:使用一段带有三角形箭头实线表示(见下图)。诠释:是一种is-a的关系代码体现:类继承实现:表示:使用一段带有三角形箭头虚线表示(见下图)。诠释:是一种类与接口的关系, 表示类...原创 2020-04-07 12:32:01 · 365 阅读 · 0 评论 -
设计模式:模板方法(Template)模式
分类:行为型模式特点:先定义一个操作中算法的骨架,而将某些步骤延迟到子类中实现。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定功能。模式结构:UML图:略(后补)抽象类(AbstractClass):定义抽象的原语操作,具体的子类将重定义它们以实现一个算法的各步骤。主要是实现一个模板方法,定义一个算法的骨架。该模板方法不仅调用原语操作,也调用定义在 Abstract...原创 2019-09-19 20:11:45 · 230 阅读 · 0 评论 -
设计模式:策略(strategy)模式
类型:行为型模式特点:将算法封装在类层次结构中,使该算法的客户端持有指向该层次结构的基类的指针,并将对算法的所有请求委托给该“匿名”包含的对象。该模式是对算法水平的封装,对于可提供相同接口的不同算法进行封装可以隐藏其实现细节。模式结构:UML图:略(后补)Context(环境角色):持有一个对 Strategy 的引用,最终给客户端调用。Strategy(抽象策略):定义了一个公共接...原创 2019-09-15 20:08:49 · 215 阅读 · 0 评论 -
设计模式:代理(Proxy)模式
分类:结构型模式特点:为其他对象提供了一种代理,以控制对这个对象的访问。模式结构:UML图:略(后补)Subject(抽象主题):声明了 RealSubject 与 Proxy 的共同接口,定义了某个/些功能。RealSubject(真实主题):通常执行具体的业务逻辑,Proxy 控制对它的访问。Proxy(代理):持有一个 RealSubject 引用(指针),可以在需要时将请求...原创 2019-09-14 21:30:55 · 172 阅读 · 0 评论 -
设计模式:装饰器模式
分类:结构型模式特点:装饰器模式可以在不改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。模式结构:UML图:略(后补)组成Component(抽象构件):给出一个抽象接口,以规范准备接收附加责任的对象。ConcreteComponent(具体构件):定义一个将要接收附加责任的类。Decorator(抽象装饰类):持...原创 2019-08-30 16:04:22 · 194 阅读 · 0 评论 -
设计模式:适配器模式
分类:结构型。该模式又分为对象适配器(对象结构型)和类适配器(类结构型),对象适配器使用对象组合,类适配器使用多继承,对象适配器耦合度较低,因此使用更多。特点:适配器模式本质上是一种补救模式,将一个类的接口转换成客户希望的另外一个接口,从而使原本由于接口不兼容而不能一起工作的类可以一起工作(对不相干的两个类建立关联)。模式结构对象适配器模式UML图(略,后补)类适配器模式U...原创 2019-08-28 18:34:22 · 141 阅读 · 0 评论 -
设计模式:外观(fasade)模式
所属类型:结构型特点:外观模式下,外观为子系统中的一组接口提供了一个统一的高层接口,该接口使得子系统更加容易使用。模式结构:UML图:略(后补)Facade(外观):模式的核心,被 Client 调用,它将所有从 Client 发来的请求委派到相应的子系统去,让子系统处理。SubSystem(子系统):可以同时有一个或者多个子系统,子系统可以是一个单独的类或类的集合。使用场景:...原创 2019-08-27 21:25:01 · 321 阅读 · 0 评论 -
设计模式:原型模式
特点:允许一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。个人认为该模式的本质是对拷贝构造函数的进一步封装,封装成一个clone函数,在外面可直接调用clone函数而无需关心内部拷贝细节。模式结构:Prototype(抽象原型):定义了克隆自身的接口。ConcretePrototype(具体原型):被复制的对象,需要实现 Prototype 定义的接口。UML图:略(...原创 2019-08-27 10:40:01 · 149 阅读 · 0 评论 -
设计模式:建造者模式
建造者模式核心:旨在将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。模式结构:Product(产品):表示被构造的复杂对象。Builder(抽象建造者):为创建一个产品对象的各个部件指定抽象接口。ConcreteBuilder(具体建造者):实现 Builder 的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。Dire...原创 2019-08-26 20:47:57 · 132 阅读 · 0 评论 -
设计模式:生产者-消费者模式
引:生产者-消费者模式是一个十分经典的多线程并发协作的模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深。所谓生产者-消费者问题,实际上主要是包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库,生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为;而消费者只需要从共享数据区中去...原创 2019-08-17 21:35:25 · 618 阅读 · 0 评论 -
设计模式:单例模式
定义:单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。代码中的三个要点:单例类的构造函数为私有;提供一个自身的静态私有成员变量;提供一个公有的静态工厂方法。下面以单例模式中的懒汉模式(推迟创建对象)为例,说明单例模式://Singleton1.h#ifndef ...原创 2019-08-19 20:32:15 · 138 阅读 · 0 评论 -
设计模式:工厂模式-(简单工厂、工厂方法、抽象工厂)
缘起:在看caffe源码时遇到了工程模式,于是查找学习了下。本文主要是将一个别人写的java demo改写成了c++ 版本。参照博客:简书博客note:要是初学工厂模式的话看上边的链接就好了,上边博客写的通俗易懂,我主要是改写了实现语言。1、简单工厂模式定义: 定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。适用场景: 其实由定义也大概能推测...原创 2019-06-15 17:17:09 · 311 阅读 · 0 评论