设计模式
文章平均质量分 76
aayysyz12345678
这个作者很懒,什么都没留下…
展开
-
《Head.First设计模式》的学习笔记(1)
《Head.First设计模式》的学习笔记(1)书中列举了一些让大脑就范的原则,其实这也是我们在学习中应该遵循的原则。这些原则如下:1、慢一点,你理解的越多,需要记的就越少。2、勤做练习,自己记笔记。3、上床睡觉之前不要再看别的书了,或者至少不再看其他有难度的东西。4、要喝水,而且要多喝点水。5、大声说出来。6、听听你的大脑怎么说。7、要有点感觉!原创 2013-07-19 00:21:43 · 721 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(8)--适配器模式
软件开发中经常遇到的问题:假设已有一个软件系统,你希望它能和一个新的厂商类库搭配使用,但是这个新厂商所设计出来的接口,不同于旧厂商的接口。如果你不想改变现有的代码,也不能改变厂商的代码,那么你该如何解决这个问题。方法其实很简单,就是写一个类,将新厂商的的接口转成你所期望的接口。如图这就是适配器模式。意图:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由原创 2013-07-21 23:35:52 · 517 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(7)--命令模式
背景:有时候我们需要对方法进行封装,通过对这些封装的方法进行调用,我们可以很好的处理一些事情。比如,记录日志,或者重复使用这些封装实现撤销功能。意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。结构:例子:这次我们将设计一个家电自动化遥控器的API需求分析:遥控器的图:1)、遥控器上具有七个可原创 2013-07-21 23:34:54 · 494 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(6)--单件模式
背景:有一些对象其实我们只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象,充当打印机、显卡等设备的驱动程序的对象。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量,或者是不一致的结果。因此,我们设计这种类时必须确保只有一个实例,单件模式应运而生。原创 2013-07-21 23:33:20 · 481 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(4)--装饰者模式
《Head.First设计模式》的学习笔记(4)--装饰者模式意图:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。结构:例子:下面我们以星巴兹(Starbuzz)的订单系统为例加以说明。需求分析:1)、星巴兹的饮料(Beverage)种类繁多,主要有HouseBlend、DarkRoast、Decaf、Espresso原创 2013-07-21 23:31:00 · 629 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记22-- 备忘录(M emento)模式拾零
HeadFir st 设计模式学习笔记22-- 备忘录(M emento)模式拾零1.概述这个模式也比较简单,书中没有提到。用于恢复上次操作结果等场景,比如数据库回滚等。这个模式有三个参与的实体:Ori gi n ator:知道如何保存自己的对象。Caretaker:知道Ori gi n ator何时以及为何保存并恢复自己的对象。Memen to:由Ori gi n ato原创 2013-07-22 00:14:28 · 631 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记21-- 解释者(Inter pr eter)模式拾零
HeadFir st 设计模式学习笔记21-- 解释者(Inter pr eter)模式拾零1.概述这个模式是在不能叫做模式,它的作用是实现⼀种语言规范的解释器,比如罗马数字解释器。2.实例我们在这创建⼀个决策器。通过构建有两种语言,OR和AND,可以想象为⼀个单位,领导给出⼀些决策意见,比如谁或者谁提拔,谁和谁提拔等(这里面有嵌套),然后存入这个决策器中。主程序通过输入几原创 2013-07-22 00:13:31 · 725 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记18--中介者(M ediator)模式拾零
HeadFir st 设计模式学习笔记18--中介者(M ediator)模式拾零.1.概述该模式在Head Fi rst中没有介绍,它用于通过⼀个中介者完成对象间通信的解耦。当代码中出现大量有着其他对象信息的对象时就可以使用这个模式。在这个模式中,有如下的参与者:中介者(Medi ator):抽象定义了“同事”(col l eagu es,稍后有定义)们通信的接口。具体中原创 2013-07-22 00:12:05 · 2606 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记12——代理模式
HeadFir st 设计模式学习笔记12——代理模式1.这⼀节的任务是我们需要完成对上⼀节的糖果机产生⼀个机器状况和余量的报告,若这个报告在本地(不是通过I n tern et)生成的话,那么我们的设计就很简单了,在糖果机中加入Locat i on 的信息,并且创建⼀个类Gu mbal l Mon i tor 完成报告的生成:pu bl i c cl ass Gu mbal l原创 2013-07-22 00:11:37 · 1201 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记11——状态模式
HeadFir st 设计模式学习笔记11——状态模式1.我们这次的话题是要实现⼀个糖果机,这个糖果机中如下的⼀些状态以指导糖果机的转移:我们根据这个状态机写了⼀个有i f . .el se为主体的状态机程序,对每⼀个状态的转入转出做了实现:pu bl i c cl ass Gu mbal l Mach i n e {f i n al stat i c i n t原创 2013-07-22 00:11:01 · 8929 阅读 · 0 评论 -
HeadFir st 设计模式学习笔记8--模板方法模式
1.这个模式比较简单,我们举⼀个银行贷款申请流程程序的例子(这个并非是书中的例子):申请贷款,银行要检查这个客户的⼀些事宜,譬如客户收支状况记录、从三个地方拿到他的信用记录、得到其他已有相关债务信息、得到借债人股票市值、得到借债人未来收入预期分析等等。我们可以设计如下⼀个模板方法:abstract class CheckBackground {public abstract v原创 2013-07-22 00:09:51 · 771 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(9)--外观模式
意图:为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。结构:例子:假设你有一套杀手级的家庭影院系统,内含DVD播放器、投影仪、自动屏幕、环绕立体声等。那么当你想看一部DVD时,需要做哪些事情呢(用最土的方式)?1、将灯光调暗;2、放下屏幕;3、打开投影仪;4、将投影仪的输入切换到DVD;5、将原创 2013-07-21 23:36:27 · 450 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(5)--工厂方法模式
《Head.First设计模式》的学习笔记(5)--工厂方法模式意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。结构:实例:下面我们以Pizza店的例子来谈谈“工厂方法模式”的来龙去脉,我们学习的思路是“原始设计-->简单工厂-->工厂方法”。情景分析:假如你有一个Pizza店,那么你的原创 2013-07-21 23:31:49 · 575 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(2)--策略模式
《Head.First设计模式》的学习笔记(2)--策略模式先对策略模式有一个总体认识。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。结构:下面通过鸭子模拟器的设计来具体介绍。公司需要设计一套鸭子模拟器系统,该系统的第一次需求为:鸭子能够戏水;鸭子能够呱呱叫。根据该需求系统设计如下:原创 2013-07-19 00:31:14 · 938 阅读 · 0 评论 -
《Head.First设计模式》的学习笔记(3)--观察者模式
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。结构:例子:下面以模拟气象站系统来加以说明。需求分析:该系统的需求如下:1、气象站能够追踪目前的天气状况,包括温度、湿度、气压、2、气象站能够提供三种布告板,分别显示目前天气状况、气象统计和简单的预报。3、布告板上的数据必须实时更新。4、气象站原创 2013-07-19 00:38:50 · 1127 阅读 · 0 评论 -
《 Head First 设计模式》Demo
1、策略模式(Strategy Pattern) 策略模式,定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 应用的设计原则: 1>封装变化:找出应用中可能需要变化之处,把它们独立出来并加以封装,不要和那些不需要变化的代码混在一起; 2>针对接口编程,而不是针对实现编程; 3>多用组合,少用继承;原创 2013-07-21 23:43:52 · 569 阅读 · 0 评论