摘要: 生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造。 现又一个度假计划指定,需要指定度假每一天的活动、旅馆、用餐、门票等等事情,但是每个客人的度假计划可能不太一样。例如天数、活动类型、用餐等等。 我们需要一个弹性的数据结构,代表客人的规划,以及不同的变化,也需要一系列潜在复杂顺序,创建这样 阅读全文
posted @ 2020-03-13 13:18 XSpringSun 阅读(628) 评论(0) 推荐(0) 编辑
摘要: 桥接模式 桥接模式:不只改变你的实现,也改变你的抽象。 如果有一个电视厂家,遥控器需要升级,电视也需要修改。这种变化部分的封装就适合使用桥接模式,桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。 设计类图: 实现遥控器抽象类 1 public abstract class Rem 阅读全文
posted @ 2020-03-12 09:17 XSpringSun 阅读(501) 评论(2) 推荐(0) 编辑
摘要: 复合模式是HeadFirst上面详细讲的最后一个模式,其前面的模式作者认为都是成熟的经常使用的模式。所以这是详细讲解模式的最后一篇,同时这个模式讲解的篇幅也是最长的,接下来我就对其进行总结提炼进行讲解。复合模式顾名思义就是使用其他模式联合使用解决问题,但是将某些模式结合使用并不代表这些模式就能称为复 阅读全文
posted @ 2020-03-10 14:25 XSpringSun 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 在HeadFirst设计模式中代理模式用了比较多的篇幅来讲解,其中的例子我感觉有些繁琐,所以我们这篇就不按照惯例用例子来阐述代理模式了。我们直接进入正题,分析模式本身的设计和解决的问题。 远程代理模式 假如我们有一个系统,能够调用本地对象,然后将每个请求转发到远程对象上进行调用应该如何设计。 在客户 阅读全文
posted @ 2020-02-28 09:29 XSpringSun 阅读(685) 评论(1) 推荐(0) 编辑
摘要: 糖果机 如下糖果机工作状态图,我们对这个状态图进行编码实现糖果机的工作过程 这个状态图的每个圆圈代表一个状态,可以看到有4个状态同时又4个动作,分别是:“投入1元钱”、“退回1元钱”、“转动曲柄”、“发放糖果”。当要发放糖果的时候需要判断糖果数量是否为0来进入“糖果售磐”或者“没有1元钱”状态。所以 阅读全文
posted @ 2020-02-10 14:04 XSpringSun 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 最近比较忙,有段时间没有更新设计模式的进度了。今天继续学习组合设计模式。 组合模式的例子我们继续延续上篇《Head First设计模式——迭代器模式》的菜单例子,首先声明下迭代器和组合模式没有什么关系,他们是两个不同模式。只是我们在这个菜单例子的组合模式内部会用到迭代器。 迭代器模式中说到两个餐馆合 阅读全文
posted @ 2020-01-06 09:14 XSpringSun 阅读(668) 评论(0) 推荐(3) 编辑
摘要: 公司内部开发的winform程序使用了FtpWebRequest下载FTP服务器的文件到本地。 大多数人运行良好,由于我们是试运行逐步有人加入到平台的使用,前两天突然有个别机器无法连接FTP服务器报出了如下错误。 The underlying connection was closed:The co 阅读全文
posted @ 2019-12-26 09:46 XSpringSun 阅读(4714) 评论(2) 推荐(1) 编辑
摘要: 前言:迭代器模式平时用的不多,因为不管C#还是Java都已经帮我封装了,但是你是否知道平时经常在用的东西本质是怎么回事呢。 看完迭代器模式你就知道C# foreach循环是怎么实现的了,我的另一篇C# Foreach循环本质与枚举器就讲解了foreach的本质,其中用到的就是迭代器模式。 按照惯例, 阅读全文
posted @ 2019-12-10 08:39 XSpringSun 阅读(647) 评论(0) 推荐(1) 编辑
摘要: 前言:本篇我们讲解模板方法模式,我们以咖啡和茶的冲泡来学习模板方法。关于咖啡另一个设计模式例子也以咖啡来讲解,可以看下:Head First设计模式——装饰者模式 废话不多说,开始进入模板方法模式。 一、冲泡咖啡和茶 冲泡咖啡的步骤: (1)把水烧开 (2)用开水冲泡咖啡 (3)把咖啡到进杯子 (4 阅读全文
posted @ 2019-12-03 09:29 XSpringSun 阅读(585) 评论(2) 推荐(1) 编辑
摘要: 前言:为什么要一次讲解这两个模式,说点骚话:因为比较简单(*^_^*),其实是他们两个有相似和有时候我们容易搞混概念。 讲到这两个设计模式与另外一个“装饰者模式”也有相似,他们三个按照结构模式分类都属于“结构性模式”,所有我们接下来就来看什么是适配器模式和外观模式。 另外装饰模式可以看我的另一篇博文 阅读全文
posted @ 2019-11-28 07:58 XSpringSun 阅读(577) 评论(2) 推荐(3) 编辑
摘要: 前言:命令模式我们平常可能会经常使用,如果我们不了解命令模式的结构和定义那么在使用的时候也不会将它对号入座。 举个例子:在winform开发的时候我们常常要用同一个界面来进行文件的下载,但是并不是所有地方都用同一个下载逻辑处理文件,然后下载界面却可以是同一个界面。 为了以后复用下载界面(下载显示,进 阅读全文
posted @ 2019-11-20 08:13 XSpringSun 阅读(685) 评论(2) 推荐(2) 编辑
摘要: 单例模式是所有设计模式中最简单的模式,也是我们平常经常用到的,单例模式通常被我们应用于线程池、缓存操作、队列操作等等。 单例模式旨在创建一个类的实例,创建一个类的实例我们用全局静态变量或者约定也能办到单例的作用,为什么我们要用单例模式? 接下来我们就从如何形成单例模式,单例模式创建的过程来讲解。 1 阅读全文
posted @ 2019-11-11 09:03 XSpringSun 阅读(735) 评论(1) 推荐(5) 编辑
摘要: 前言:按照惯例我以Head First设计模式的工厂模式例子开始编码学习。并由简单工厂,工厂模式,抽象工厂模式依次演变,归纳他们的相同与不同。 话说Head First认为简单工厂并不是设计模式,而是一种编程习惯,但并不妨碍我们使用它,接下来我们对工厂模式一探究竟。 1、披萨店例子 首先我们要开一个 阅读全文
posted @ 2019-11-07 01:38 XSpringSun 阅读(773) 评论(2) 推荐(4) 编辑
摘要: 前言:对于设计模式我们有时候在想是否有必要,因为实际开发中我们没有那么多闲工夫去套用这么多设计模式,也没有必要为了模式而模式。 通常这些模式会引入新的抽象层,增加代码的复杂度,但是当我们掌握了这些设计模式, 在系统中比较棘手或者需要以后修改扩展的地方采用了合适的设计模式会让我们的系统易于扩展维护甚至 阅读全文
posted @ 2019-10-25 08:43 XSpringSun 阅读(885) 评论(0) 推荐(2) 编辑
摘要: 前言: 这篇文章我们以Head First设计模式中讲解的气象站为例,通过它的案列进行学分析和编码(C#)测试,并归纳总结出观察者模式。 1、气象监测案列,错误示范实现 一个气象站,分别有三个装置:温度感应装置,湿度感应装置,气压感应装置。WeathData对象跟踪气象站数据,WeathData有M 阅读全文
posted @ 2019-10-22 11:28 XSpringSun 阅读(654) 评论(0) 推荐(1) 编辑