随笔分类 -  设计模式

摘要:第一篇设计模式2019年10月开始,到现在差不多半年的时间了,最后我终于坚持写完了。 不管写的质量是好是坏【坚持】这件事确实是很困难的。最初的想法是通过写博客来督促自己,让自己把这个学习的过程记录下来,之前都只逛园子,很多东西记录到云笔记。但是云笔记和博客相比缺少一样东西,那就是分享,当别人发现有不 阅读全文
posted @ 2020-03-24 13:19 XSpringSun 阅读(905) 评论(0) 推荐(6) 编辑
摘要:原型 原型模式:当创建给定类的过程很昂贵或很复杂时,就使用原型模式。 我们在进行游戏的时候游戏会动态创建怪,而怪时根据场景的不同而变化创建的,英雄自己也会创建一些随从。创建各式各样的怪兽实例,已经越来越麻烦,将各种状态细节放再构造器中,看起来一点都不内聚。如果能够在单一区域内封装所有的实例化细节,能 阅读全文
posted @ 2020-03-23 08:30 XSpringSun 阅读(555) 评论(0) 推荐(0) 编辑
摘要:中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式。 Bob有一个自动屋,当他的闹钟响了之后,闹钟会告诉咖啡壶开始煮咖啡。后来客户不断的提出许多新需求:周末不要提供咖啡、下班后需要扫地机器人扫地等。这个时候咖啡壶需要接受闹钟并检查日期,而日历需要接受闹钟的询问并告诉闹钟是否周末 阅读全文
posted @ 2020-03-17 09:39 XSpringSun 阅读(533) 评论(3) 推荐(0) 编辑
摘要:蝇量 蝇量模式:如果让某个类的一个实例能用来提供许多“虚拟实例”,就使用蝇量模式。 在一个设计房子的平台中,周围要加上一些树,树有一个坐标XY坐标位置,而且可以根据树的年龄动态将自己绘制出来。如果我们创建许多树之后,会有许多树的实例对象。使用一个树实例和一个客户对象来维护“所有”树的状态,这就是蝇量 阅读全文
posted @ 2020-03-15 12:49 XSpringSun 阅读(390) 评论(0) 推荐(1) 编辑
摘要:生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造。 现又一个度假计划指定,需要指定度假每一天的活动、旅馆、用餐、门票等等事情,但是每个客人的度假计划可能不太一样。例如天数、活动类型、用餐等等。 我们需要一个弹性的数据结构,代表客人的规划,以及不同的变化,也需要一系列潜在复杂顺序,创建这样 阅读全文
posted @ 2020-03-13 13:18 XSpringSun 阅读(618) 评论(0) 推荐(0) 编辑
摘要:桥接模式 桥接模式:不只改变你的实现,也改变你的抽象。 如果有一个电视厂家,遥控器需要升级,电视也需要修改。这种变化部分的封装就适合使用桥接模式,桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。 设计类图: 实现遥控器抽象类 1 public abstract class Rem 阅读全文
posted @ 2020-03-12 09:17 XSpringSun 阅读(490) 评论(2) 推荐(0) 编辑
摘要:复合模式是HeadFirst上面详细讲的最后一个模式,其前面的模式作者认为都是成熟的经常使用的模式。所以这是详细讲解模式的最后一篇,同时这个模式讲解的篇幅也是最长的,接下来我就对其进行总结提炼进行讲解。复合模式顾名思义就是使用其他模式联合使用解决问题,但是将某些模式结合使用并不代表这些模式就能称为复 阅读全文
posted @ 2020-03-10 14:25 XSpringSun 阅读(584) 评论(0) 推荐(0) 编辑
摘要:在HeadFirst设计模式中代理模式用了比较多的篇幅来讲解,其中的例子我感觉有些繁琐,所以我们这篇就不按照惯例用例子来阐述代理模式了。我们直接进入正题,分析模式本身的设计和解决的问题。 远程代理模式 假如我们有一个系统,能够调用本地对象,然后将每个请求转发到远程对象上进行调用应该如何设计。 在客户 阅读全文
posted @ 2020-02-28 09:29 XSpringSun 阅读(674) 评论(1) 推荐(0) 编辑
摘要:糖果机 如下糖果机工作状态图,我们对这个状态图进行编码实现糖果机的工作过程 这个状态图的每个圆圈代表一个状态,可以看到有4个状态同时又4个动作,分别是:“投入1元钱”、“退回1元钱”、“转动曲柄”、“发放糖果”。当要发放糖果的时候需要判断糖果数量是否为0来进入“糖果售磐”或者“没有1元钱”状态。所以 阅读全文
posted @ 2020-02-10 14:04 XSpringSun 阅读(754) 评论(0) 推荐(0) 编辑
摘要:最近比较忙,有段时间没有更新设计模式的进度了。今天继续学习组合设计模式。 组合模式的例子我们继续延续上篇《Head First设计模式——迭代器模式》的菜单例子,首先声明下迭代器和组合模式没有什么关系,他们是两个不同模式。只是我们在这个菜单例子的组合模式内部会用到迭代器。 迭代器模式中说到两个餐馆合 阅读全文
posted @ 2020-01-06 09:14 XSpringSun 阅读(659) 评论(0) 推荐(3) 编辑
摘要:前言:迭代器模式平时用的不多,因为不管C#还是Java都已经帮我封装了,但是你是否知道平时经常在用的东西本质是怎么回事呢。 看完迭代器模式你就知道C# foreach循环是怎么实现的了,我的另一篇C# Foreach循环本质与枚举器就讲解了foreach的本质,其中用到的就是迭代器模式。 按照惯例, 阅读全文
posted @ 2019-12-10 08:39 XSpringSun 阅读(633) 评论(0) 推荐(1) 编辑
摘要:前言:本篇我们讲解模板方法模式,我们以咖啡和茶的冲泡来学习模板方法。关于咖啡另一个设计模式例子也以咖啡来讲解,可以看下:Head First设计模式——装饰者模式 废话不多说,开始进入模板方法模式。 一、冲泡咖啡和茶 冲泡咖啡的步骤: (1)把水烧开 (2)用开水冲泡咖啡 (3)把咖啡到进杯子 (4 阅读全文
posted @ 2019-12-03 09:29 XSpringSun 阅读(578) 评论(2) 推荐(1) 编辑
摘要:前言:为什么要一次讲解这两个模式,说点骚话:因为比较简单(*^_^*),其实是他们两个有相似和有时候我们容易搞混概念。 讲到这两个设计模式与另外一个“装饰者模式”也有相似,他们三个按照结构模式分类都属于“结构性模式”,所有我们接下来就来看什么是适配器模式和外观模式。 另外装饰模式可以看我的另一篇博文 阅读全文
posted @ 2019-11-28 07:58 XSpringSun 阅读(565) 评论(2) 推荐(3) 编辑
摘要:前言:命令模式我们平常可能会经常使用,如果我们不了解命令模式的结构和定义那么在使用的时候也不会将它对号入座。 举个例子:在winform开发的时候我们常常要用同一个界面来进行文件的下载,但是并不是所有地方都用同一个下载逻辑处理文件,然后下载界面却可以是同一个界面。 为了以后复用下载界面(下载显示,进 阅读全文
posted @ 2019-11-20 08:13 XSpringSun 阅读(664) 评论(2) 推荐(2) 编辑
摘要:单例模式是所有设计模式中最简单的模式,也是我们平常经常用到的,单例模式通常被我们应用于线程池、缓存操作、队列操作等等。 单例模式旨在创建一个类的实例,创建一个类的实例我们用全局静态变量或者约定也能办到单例的作用,为什么我们要用单例模式? 接下来我们就从如何形成单例模式,单例模式创建的过程来讲解。 1 阅读全文
posted @ 2019-11-11 09:03 XSpringSun 阅读(723) 评论(1) 推荐(5) 编辑
摘要:前言:按照惯例我以Head First设计模式的工厂模式例子开始编码学习。并由简单工厂,工厂模式,抽象工厂模式依次演变,归纳他们的相同与不同。 话说Head First认为简单工厂并不是设计模式,而是一种编程习惯,但并不妨碍我们使用它,接下来我们对工厂模式一探究竟。 1、披萨店例子 首先我们要开一个 阅读全文
posted @ 2019-11-07 01:38 XSpringSun 阅读(758) 评论(2) 推荐(4) 编辑
摘要:前言:对于设计模式我们有时候在想是否有必要,因为实际开发中我们没有那么多闲工夫去套用这么多设计模式,也没有必要为了模式而模式。 通常这些模式会引入新的抽象层,增加代码的复杂度,但是当我们掌握了这些设计模式, 在系统中比较棘手或者需要以后修改扩展的地方采用了合适的设计模式会让我们的系统易于扩展维护甚至 阅读全文
posted @ 2019-10-25 08:43 XSpringSun 阅读(872) 评论(0) 推荐(2) 编辑
摘要:前言: 这篇文章我们以Head First设计模式中讲解的气象站为例,通过它的案列进行学分析和编码(C#)测试,并归纳总结出观察者模式。 1、气象监测案列,错误示范实现 一个气象站,分别有三个装置:温度感应装置,湿度感应装置,气压感应装置。WeathData对象跟踪气象站数据,WeathData有M 阅读全文
posted @ 2019-10-22 11:28 XSpringSun 阅读(644) 评论(0) 推荐(1) 编辑
摘要:1、继承带来的扩展和复用问题 继承作为面向对象的三大要素(封装、继承、多态)之一为什么会带来问题,问题如何解决然后形成一种设计模式,head frist设计模式书中以鸭子作为例子讲解什么情况下继承的方式会带来问题。首先有各种各样的鸭子,那么自然想到各种鸭子继承自一个父类:父类为Duck,现有绿头鸭G 阅读全文
posted @ 2019-10-18 15:24 XSpringSun 阅读(993) 评论(3) 推荐(6) 编辑