Head First设计模式
文章平均质量分 78
这里记录一些学习Head First设计模式的笔记。
zhazha_hui
我是一条狗,常在岸上走。
展开
-
Head First 设计模式笔记 9.状态模式
状态模式能够根据对象内部的状态来调整自己的行为。当代码中需要用到大量的if-else语句判断对象状态进行不同的行为的时候,状态模式是一个不错的选择。下面我们举一个糖果机器的例子,来看看状态模式的魅力。糖果机现在要求设计这样一台糖果机,其中的动作包括投币,转动曲柄,退款,发放糖果。动作和状态的转移关系如图所示。要求实现这些状态,并且在每一种状态对用户投币和转动曲柄进行提醒。例如在未投币转动手柄,提示用户“请投币。”我们可以看到,糖果机有4种状态,用户每进行一种操作,都需要对这4种状态进行判断。产生大量原创 2021-01-09 13:32:40 · 77 阅读 · 0 评论 -
Head First 设计模式笔记 8.迭代器模式和组合模式
迭代器模式在设计中我们常常会遇到一些对象的集合,假如要让客户了解内部细节去访问这些元素,一来不安全,二来客户任务会很繁琐,这个时候迭代器模式就可以排上用场了。下面我们举个例子来说明迭代器模式的工作方式。餐厅和煎饼屋现在餐厅和煎饼屋合并了,早餐在煎饼屋提供,而午餐由餐厅提供,结果双方就菜单的问题吵了起来。原来,煎饼屋的早餐菜单是用ArrayList实现的,而餐厅的午餐菜单是由Array数组实现的。两家互不相让,导致服务员要打印它们的菜单的话,就需要用不同的方法。打印ArrayList类型的早餐菜单/原创 2021-01-08 19:31:11 · 161 阅读 · 0 评论 -
Head First 设计模式笔记 7.模板方法模式
我们之前封装了对象创建,方法调用,复杂接口,鸭子,这一次,我们要封装算法块。咖啡与茶在设计中,我们常常会遇到一些方法通用,另外一些方法却不一样的情况。例如现在咖啡店中,茶和咖啡的冲法非常相似。我们看看。步骤咖啡冲泡法茶冲泡法1水煮沸 boilWater()水煮沸 boilWater()2沸水冲泡咖啡 brewCoffeeGrinds()沸水浸泡茶叶 steepTeaBag()3咖啡入杯 pourInCup()茶入杯 pourInCup()4加糖和牛原创 2021-01-07 18:23:11 · 86 阅读 · 0 评论 -
Head First 设计模式笔记 6.适配器模式和外观模式
适配器模式将一个对象包装成看起来像另一个对象,而外观模式用于将对象包装起来简化接口原创 2021-01-05 18:38:55 · 143 阅读 · 1 评论 -
Head First 设计模式笔记 5.命令模式
设计要求初步实现命令模式实际实现宏命令队列请求和日志请求原创 2021-01-04 19:06:36 · 212 阅读 · 0 评论 -
Head First 设计模式笔记 4.单例模式
单例模式比较简单,用于创建全局唯一的一个对象。这里简介一下如何实现单例模式并且保证其线程安全原创 2021-01-02 15:21:32 · 999 阅读 · 9 评论 -
Head First 设计模式笔记 4.工厂模式
这篇博客记录了`new`操作符新建对象不够灵活的问题,通过一个披萨系统讲解了简单工厂,工厂方法模式,抽象工厂模式。并对依赖倒置原则进行了简单的说明。原创 2020-12-31 20:50:29 · 182 阅读 · 0 评论 -
Head First 设计模式笔记 3.装饰者模式
这篇博客简要通过一个订单系统案例,各种调料装饰饮品,最后计算咖啡价格。由此介绍了对**扩展开放-对修改关闭**的设计原则和**装饰者模式**的基本概念,它的基础类图,最后用设计者模式将调味料作为装饰者,将饮料作为被装饰者。解决了这一问题并且实现了对应代码。原创 2020-12-30 15:46:59 · 226 阅读 · 0 评论 -
Head First 设计模式笔记 2.观察者模式
**观测者模式**定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。这里简要写一下为何使用观察者模式,如何实现以及它在Java中的内置类。原创 2020-12-30 10:54:41 · 138 阅读 · 0 评论 -
Head First 设计模式笔记 1.策略模式
这篇文章将通过一个鸭子的设计修改过程,讲解一点关于策略模式的知识以及一些常用的设计原则。原创 2020-12-27 21:26:37 · 151 阅读 · 2 评论