随笔分类 - Head First 设计模式
摘要:模式 是在某情境(context)下,针对某问题的某种解决方案。 P579 情景:应用某个模式的情况 问题:你想在某情境下达到的目标,但也可以是某情境下的约束 解决方案:一个通用的设计,用来解决约束、达到目标 模式必须应用于一个重复出现的问题。 P581 思考题 配对下列模式和描述: P587 装饰
阅读全文
摘要:复合模式 在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 P500 思考题 public interface Quackable { public void quack(); } public class MallardDuck implements Quackable { pub
阅读全文
摘要:思考题 如何设计一个支持远程方法调用的系统?你要怎样才能让开发人员不用写太多代码?让远程调用看起来像本地调用一样,毫无瑕疵? P435 已经接触过 RPC 了,所以就很容易知道具体流程:客户端调用目标类的代理对象(消费者)的方法,消费者内部将相关调用信息通过网络传到服务端对应的目标类的代理对象(生产
阅读全文
摘要:思考题 public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static SOLD
阅读全文
摘要:思考题 我们不仅仅要支持多个菜单,甚至还要支持菜单中的菜单。你如何处理这个新的设计需求? P355 【提示】在我们的新设计中,真正需要以下三点: P354 我们需要某种属性结构,可以容纳菜单、子菜单和菜单项 我们需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便 我们也需要能够
阅读全文
摘要:思考题 public void printMenu() { PancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList breakfastItems = pancakeHouseMenu.getMenuItems();
阅读全文
摘要:模板方法模式 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 P289 特点 主导算法框架,并且保护这个算法 P288 最大化复用代码 P288 算法只存在于一个地方,容易修改 P288 专注算法本身,由子类提供完整
阅读全文
摘要:思考题 想想看,你在 JavaAPI 中遇到过哪些外观,你还希望 Java 能够新增哪些外观? P262 println、log 日志接口、JDBC 接口 突然让想感觉想不出来,各种 API 都用得挺顺的,没有太麻烦的使用 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高
阅读全文
摘要:思考题 你能想到真实世界中,还有哪些适配器的例子? P236 HDMI 转 VGA 转换器 Type-C 转 3.5mm 线 适配器模式解析 客户使用适配器的过程: P241 客户通过目标接口调用适配器的方法对适配器发出请求 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 客户接收到
阅读全文
摘要:命令模式 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 P206 特点 使请求调用者和请求接收者解耦 P207 适合用来建立有弹性的设计,维持开闭原则 (同装饰器模式 P104) 使用宏命令可以一次执行其他一系列命令 P225 缺点 存大量具体
阅读全文
摘要:全局变量的缺点 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象 P170 和 JVM 实现有关,有些 JVM 的实现是:在用到的时候才创建对象 思考题 Choc-O-Holic 公司使用如下工业强度巧克力锅炉控制器 public class ChocolateBoiler { pri
阅读全文
摘要:思考题 如何将实例化具体类的代码从应用中抽离,或者封装起来,使它们不会干扰应用的其他部分? P111 将实例化具体类的代码放入一个对象中管理,通过不同入参决定实例化具体的类 简单工厂 不是23种GOF设计模式之一,而更像一种编程习惯。 P117 特点 通常利用静态方法创建实例,但这样无法通过继承来改
阅读全文
摘要:思考题 有如下类设计: 如果牛奶的价钱上扬,怎么办?新增一种焦糖调料风味时,怎么办? 造成这种维护上的困难,违反了我们之前提过的哪种设计原则? P82 取出并封装变化的部分,让其他部分不收影响 多用组合,少用继承 思考题 请为下面类的 cost() 方法书写代码。 P83 抽象类:Beverage
阅读全文
摘要:思考题 在我们的一个实现中,下列哪种说法正确?(多选) P42 public class WeatherDate { // 实例变量声明 public void measurementsChanged() { float temp = getTemperature(); float humidity
阅读全文
摘要:当涉及到“维护”时,为了“复用”目的而使用继承,结局并不完美 P4 对父类代码进行修改时,影响层面可能会很大 思考题 利用继承来提供 Duck 的行为,这会导致下列哪些缺点?(多选) P5 A. 代码在多个子类中重复 使用继承就是为了复用代码 【答案有此选项】从另一方面考虑,也有这个缺点,比如:多个
阅读全文
摘要:Head First 学习原则 P xxx 可视化:图片使得学习效率更高,更易懂 交谈式:第一人称交谈方式讲述学习内容更易引起注意 多思考:自主思考练习题和拓展知识的问题 保持注意力集中:将知识融合进有趣、亮眼的内容中,不断引起并保持注意力 影响情绪:关心、好奇、有趣、自豪感等有助于提高记忆能力 学
阅读全文

浙公网安备 33010602011771号