随笔分类 - 读书笔记
摘要:策略模式是围绕可以互换的算法来创建成功业务的,然而,状态走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。 定义状态模式 先看看定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 问题引入 自动糖果售卖机,糖果机的控制器需要的工作流程如下图 状态机101
阅读全文
摘要:需求分析 餐厅的菜单管理系统需要有煎饼屋菜单和披萨菜单。现在希望在披萨菜单中能够加上一份餐后甜点的子菜单。 我们需要一下改变: 需要某种树形结构,可以容纳菜单、子菜单和菜单项; 需要确定能够在每个菜单的各个项之间游走,而且至少像用迭代器一样方便; 需要能够更有弹性地在菜单项之间游走。比方说,可能只需
阅读全文
摘要:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单。煎饼屋使用ArrayList记录他的菜单项,而餐厅使用的是数组。想要知道菜单列表的话就需要知道具体类型。 检查菜单项 让我们先检查每份菜单上的项目
阅读全文
摘要:模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 设计原则: 由超类主控一切,当它们需要的时候,自然会去调用子类。(别找我,我来找你) 星巴兹咖啡冲泡法 把水煮沸 用沸水冲泡咖啡 把咖啡倒进杯子 加糖和牛
阅读全文
摘要:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 **最少知识原则: **只和你的密友谈话。 我们已经知道适配器模式是如何将一个类的接口转换成另一个符合客户期望的接口的。现在我们要看一个改变接口的新模式,但是它改变接口的原因是为了简化接口。这个模
阅读全文
摘要:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 面向对象适配器 假设已有一个软件系统,你希望它能和一个新的产商类库搭配使用,但是这个新产商所设计出来的接口,不同于旧产商的接口: 你不想改变现有的代码,解决这个问题(而且你也不能改变产商的代码)。所以该怎
阅读全文
摘要:命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 设计自动化遥控器的API。这个遥控器有7个可编程的插槽,每个都可以指定到一个不同的家电装置。每个插槽都有对应的“打开”和“关闭”按钮。这个遥控器还具备一个整体的撤销按钮。 你要做的是创建一组
阅读全文
摘要:简单工厂 代码实现 public class SimplePizzaFactory { public Pizza createPizza(String type) { // 使用该方法实例化新对象 Pizza pizza = null; if (type.equals("cheese")) { pi
阅读全文
摘要:**装饰者模式: **动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 原则: 对扩展开放,对修改关闭。 问题引入: 购买咖啡时,也可以要求在其中加入各种调料,例如:蒸奶(Steamed Milk)、豆浆(Soy)、摩卡(Mocha,也就是巧克力风味)或覆盖奶泡。星巴兹
阅读全文
摘要:第八章 多态 *多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。*构建可扩展的程序。 封装,是合并属性和行为创建一种新的数据类型,继承是建立数据类型之间的某种关系(is-a),而多态就是这种关系在实际场景的运用。 多态就是把做什么和怎么做分开了;其中,做什么是指调用的哪个方法[play
阅读全文
摘要:第九章 接口 抽象类和抽象方法 抽象:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。 这句话概括了抽象的概念,而在Java中,你可以只给出方法的定义不去实现方法的具体事物,由子类去根据具体需求来具体实现。 抽象类除了包含抽象
阅读全文

浙公网安备 33010602011771号