设计模式
文章平均质量分 88
阿翔同学
这不是通往幼儿园的车车
展开
-
设计模式-职责链模式
前面我们介绍了设计模式中的 策略模式,今天我们来介绍最后一种设计模式----职责链模式我们还是通过一个传统的解决方案来引出职责链模式一.需求1) 采购员采购教学器材 2) 如果金额 小于等于5000, 由教学主任审批 (0<=x<=5000) 3) 如果金额 小于等于10000, 由院长审批 (5000<x<=10000) 4) 如果金额 小于等于30000, 由副校长审批 (10000<x<=30000) 5) 如果金额 超过30000以上,原创 2020-10-18 09:48:52 · 154 阅读 · 0 评论 -
设计模式-策略模式
前面介绍的 一些 设计模式都是 简单的介绍一下,因为 不是重点,今天的策略模式 是重点所以我们详细的介绍一下我们还是通过一个案例来引出我们的策略模式一.编写鸭子项目,具体要求如下: 1) 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 2) 显示鸭子的信息二.传统的解决方案传统的方式实现的问题分析和解决方案 1) 其它鸭子,都继承了Duck类,所以fly让所有子类都会飞了,这是不正确的 2) 上面说的1 的问题,其实是继承带来的问题:对.原创 2020-10-15 08:58:38 · 113 阅读 · 0 评论 -
设计模式-状态模式
我们还是通过一个案例来引出状态模式案例:APP抽奖活动问题 请编写程序完成APP抽奖活动 具 体要求如下: 1) 假如每参加一次这个活动要 扣除用户50积分,中奖概率 是10% 2) 奖品数量固定,抽完就不能 抽奖 3) 活动有四个状态: 可以抽奖、 不能抽奖、发放奖品和奖品 领完 4) 活动的四个状态转换关系图 (下图)状态模式基本介绍:1) 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外 输出不同的行为的问题。状态和行为是一一.原创 2020-10-14 09:58:59 · 76 阅读 · 0 评论 -
设计模式-解释器模式
前面我们介绍了设计模式中的备忘录模式【用于记录对象的状态】,今天我们来介绍一下解释器模式我们还是通过一个案例来介绍一下案例:四则运算问题 1)通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 2)先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 在分别输入a ,b, c, d, e 的值 3) 最后求出结果:如图一.传统方案解决四则运算问题分析 1) 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析【一般都是用 两个栈来.原创 2020-10-13 10:36:36 · 55 阅读 · 0 评论 -
设计模式-备忘录模式
前面我们介绍了设计模式的一种----中介者模式,今天我们来介绍一下另一种----备忘录模式还是通过一个案例来了解一下一.游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态1.传统的设计方案:2.传统的方式的问题分析 1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不 利于管理,开销也很大. 2) 传统的方式是简单地做备份,n..原创 2020-10-12 08:47:22 · 103 阅读 · 0 评论 -
设计模式-中介模式
前面我们讲解了观察者模式,今天我们来介绍一下中介者模式1601093438650我们还是通过一个案例 来了解一下一.智能家庭项目: 1) 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 2) 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流 程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放我们先来看看传统的设计方案传统的方式的问题分析 1) 当各电器对象有多种状态改变时,相互之间的调用关系会比..原创 2020-10-02 13:48:27 · 84 阅读 · 0 评论 -
设计模式-观察者模式
前面介绍了设计模式中得迭代器模式 ,今天来聊一聊另外一个设计模式- 观察者模式UP主卑微求三连一.需求:天气预报项目需求,具体要求如下: 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如 发布到自己的网站或第三方)。 2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。【比如小米手机,华为手机的天气预报软件】3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方二.传统方案WeatherData类 .原创 2020-09-30 12:15:04 · 129 阅读 · 0 评论 -
设计模式-迭代器模式
前面我们介绍了 设计模式中的访问者模式,今天我们来介绍一下 迭代器模式1601093438650一.看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。如图:我们先来看看传统的解决方案1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个 学院,一个学院有多个系, 因此这种方案,..原创 2020-09-28 11:13:07 · 259 阅读 · 0 评论 -
设计模式-访问者模式
前面我们介绍了 设计模式中的命令模式,现在我们来介绍一下设计模式中的访问者模式1601093438650还是来通过需求来介绍一下访问者模式。一.需求:完成测评系统需求 1) 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对 该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 想来看看传统的方案怎么解决这个问题的传统方式的问题分析 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改 动较大,违反了ocp原..原创 2020-09-27 13:37:05 · 83 阅读 · 0 评论 -
设计模式-命令模式
前面我们介绍了 模板方法模式,现在 我们来介绍一下 命令模式。我们先来看看 一个视频 了解一下我们还是先来引出一个需求:一.需求1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就 可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我 们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口 给app调用,这时 就原创 2020-09-26 13:10:21 · 1174 阅读 · 3 评论 -
设计模式-模板方法模式
前面我们介绍了设计模式中的代理模式,今天我们来看一看设计模式中的另一种模式- 模板方法模式一.案例:编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就 想到这个方案,因此就直接使用,不再使用传.原创 2020-09-24 12:12:48 · 205 阅读 · 0 评论 -
设计模式-代理模式
前面我们介绍了 享元模式,今天我们来介绍一下 代理模式一.代理模式的基本介绍 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理 对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的 功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代 理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口,原创 2020-09-23 12:52:21 · 87 阅读 · 0 评论 -
设计模式-享元模式
前面我们接收了设计模式中的外观模式,今天我们来介绍一下享元模式。先看个视频了解一下我们还是抛出一个实际的案例,帮助大家理解:一.需求:小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希 望做这样的产品展示网站,但是要求都有些同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布传统方案解决网站展现项目 1) 直接复制粘贴一份,然后根据客户不同要求,进行定制修改 2) 给每个网站租用原创 2020-09-22 11:55:45 · 297 阅读 · 0 评论 -
设计模式-外观模式
前面 介绍了 设计模式中的组合模式,今天我们来认识一下外观模式还是 先 提出一个 需求引出外观模式(比较与传统的方法)一.需求:组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的 功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 • 观影结束后,关闭各种设备传统的方式.原创 2020-09-21 12:28:45 · 57 阅读 · 0 评论 -
设计模式-组合模式
今天来介绍一下组合模式 ,什么是组合模式呢?先看个视频了解一下求关注还是 一样的,想通过一个需求来引出我们的 组合模式一.需求:编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。我们先来看看传统的解决方式UML类图,看看有什么优势和劣势传统方案解决学校院系展示存在的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的 2) 实际上我们的要求..原创 2020-09-20 10:32:39 · 73 阅读 · 0 评论 -
设计模式-装饰者模式
前面 我们介绍了桥接模式,今天我们来介绍一下装饰者模式.那么什么是装饰者模式呢? 先来看一个视频介绍一下。看完之后 您应该了解博主的为人了,那我们来进去正题。一.我们先来看一看一个 案例:星巴克咖啡订单项目(咖啡馆): 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式 咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便.原创 2020-09-17 15:41:39 · 69 阅读 · 0 评论 -
设计模式-桥接模式
我们知道虚拟机网络的连接 有 桥接模式,那设计模式中的桥接模式到底是怎么样子的呢?想来一个视频,了解一下,你懂的好接下来 我们还是通过 老规矩 想来个 需求一.案例:现在对不同手机类型的 不同品牌实现操作编程(比如: 开机、关机、上网,打电话等), 如图:对于这种问题传统的解决方案先来个UML类图:传统方案解决手机操作问题分析 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品 牌手机的类,同样如果我们增加一个手机品牌,也要在各个手..原创 2020-09-13 08:59:52 · 72 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式到底指的是什么东西呢?首先我们得了解适配器大概有什么作用 ? 可以通过一个视频了解一下白嫖者vsup主好,再看了这个视频时候呢? 就开始认真得介绍了一.先来看看一个生活中得例子(帮助大家理解),然后具体介绍比如你要去外地旅游,泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以 使用了。大家看到了 其实适配器主要就是解决了 不兼容得问题。同理适配器模式 也是用来解决类似得问题得。1.接下来看看具体得定义:1) 适配器模式(..原创 2020-09-12 10:05:55 · 66 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式 是什么样子的呢? 为什么引出呢?我们先看一个视频了解一下白嫖者vsup主需求:建房子1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是 要求不要相同的. 3) 请编写程序,完成需求一.先从传统的方案分析一下 :还是一样的我们先来画个UML类图 一看大家就知道怎么写啦传统方式得优点与缺点:优点:优点就是特别简单,非常得好理解 缺点:设计的程序结构,过于简单,没...原创 2020-09-11 10:32:49 · 82 阅读 · 0 评论 -
设计模式-原型模式
什么是原型模式 呢? 其实这个东西看起来抽象,理解起来非常容易的先来看视频了解一下:白嫖者vsup主原型模式-基本介绍(就是加一个clone的成员函数,创建并返回一个和调用者一模一样的对象)基本介绍 1) 原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷 贝这些原型,创建新的对象 2) 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象, 无需知道如何创建的细节 3) 工作原理是:通过将一个原型对象传给那个要发动创.原创 2020-09-10 09:28:51 · 101 阅读 · 0 评论 -
设计模式-抽象工厂模式
前面介绍了 简单工厂模式和工厂方法模式,接下来我们来介绍 抽象工厂模式那抽象工厂模式 到底是长什么样子的呢?老规矩 上图抽象工厂模式 基本介绍 1) 抽象工厂模式:定义了一个interface用于创建相关或有依赖关系的对象簇,而无需 指明具体的类 2) 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。 3) 从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。 4) 将工厂抽象成两层,AbsFactory(抽象工厂) 和 具体实现的工厂子类。原创 2020-09-08 19:37:52 · 136 阅读 · 0 评论 -
设计模式-工厂方法模式
前面介绍了简单工厂模式,接下来我们介绍第二中工厂模式,那它到底是什么呢?工厂方法模式 看一个新的需求 披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza、 北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza。 思路1 使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、 LDPizzaSimpleFactory 等等.从当前这个案例来说,也是可以的,但是考虑到项目的 规模,以及软件的可维原创 2020-09-08 19:03:41 · 69 阅读 · 0 评论 -
设计模式-简单工厂模式
什么是简单工厂模式呢?1) 简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一 个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族 中最简单实用的模式 2) 简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行 为(代码) 3) 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会 使用到工厂模式.我们这里先举一实际的需求:我们要订购食物 , 食物的种类 有 A, B, C 中,分别记为 FoodA...原创 2020-09-07 22:02:06 · 84 阅读 · 0 评论 -
设计模式-单例模式
单例模式是什么呢?所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。代码演示(代码比较容易我就不多加没有必要的 cpp文件了):Factory.h#pragma once#include "Food.h"class Factory{public: static Factory* GetFactory() { static Factory ...原创 2020-08-19 16:13:41 · 110 阅读 · 0 评论 -
设计模式的具体介绍
一.掌握设计模式的层次1) 第1层:刚开始学编程不久,听说过什么是设计模式 2) 第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但 是自己却不知道 3) 第3层:学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式 挺好用的 4) 第4层:阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够 领会设计模式的精妙和带来的好处。 5) 第5层:代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写了出 来。二.设计..原创 2020-08-19 15:33:36 · 91 阅读 · 0 评论 -
设计模式的7大原则
其实不过是什么设计模式,都会尽量的遵循这最为核心的七大原则,那么是哪七大原则呢?花了大把时间总结如果 对你有帮助清点赞,白嫖者 三天之内必得痔疮一.设计模式常用的七大原则有: 1) 单一职责原则 2) 接口隔离原则 3) 依赖倒转(倒置)原则 4) 里氏替换原则 5) 开闭原则 6) 迪米特法则 7) 合成复用原则诶?这几个是什么意思呢?不用怕,我给大家逐一来介绍一下1.单一职责原则对类来说的,即一个类应该只负责一项职责。如类A...原创 2020-08-19 14:59:15 · 8935 阅读 · 6 评论 -
设计模式概念和存在的原因
一.大家肯定有一个问题 。 什么是设计模式?软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现) 的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人 在1990年代从建筑设计领域引入到计算机科学的我们来举个例子:设计模式的引入 来源于建筑学 就如同上图一样 有了 设计模式 就仿佛你建房子的地基非常的牢固,结构非常有层次性,你就可以盖成高楼大厦,反之如果 项目结构混乱 你就盖成了 右边这个图这副模样 外观丑陋,地基原创 2020-08-19 11:56:08 · 259 阅读 · 0 评论