HeadFirst设计模式学习
文章平均质量分 95
入职前的学习笔记,从本地的markdown文件尝试转入到博客的编写
梅槑
这个作者很懒,什么都没留下…
展开
-
12 模式的模式:复合模式
1.引入1.0 引入使用模式最棒的方式,就是把它们从家里找出来同其他模式展开交互。你越多地使用模式就越容易发现它们一同现身在你的设计中。对于这些在设计中携手合作征服许多问题的模式,我们给它一个特别的名字:复合模式 (Compound Pattern)。没错!我们说的正是一种由模式所构成的模式。在本章,将重访SimUDuck鸭子模拟器中那些熟悉的鸭子。复合模式必须够一般性,适合解决许多问题才行。因此,在本章的后半段,将会拜访一个真正的复合模式,就是MVC(Model-View-Control).原创 2022-03-18 13:47:10 · 729 阅读 · 0 评论 -
11 控制对象访问:代理模式
1.引入1.1 需求引入接着第10张 状态模式的例子接着向下进行:糖果机已经可以取得糖果数量getCount()方法和取得糖果机状态的getState()方法。现在所需要的事,就是创建一份能打印出来的报告,然后将它递送给CEO。我们可能需要为每个糖果机加上一个位置的字段。1.2 初步尝试首先为GumballMachine加上处理位置的支持:package designMode.proxy.gumballmonitor;public class GumballMachin原创 2022-03-15 15:33:36 · 650 阅读 · 0 评论 -
10:状态模式
1.引入1.1 先前引入基本常识:策略模式和状态模式是双胞胎,在出生时才分开。你已经知道了,策略模式是围绕可以互换的算法来创建成功业务的。然而,状态走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。它常常告诉它的对象客户“跟着我念:我很棒,我很聪明,我最优秀了……”1.2 需求引入需要制作一个糖果机,使之满足下面的工作状态。“没有25分钱”状态,指的是 “未投币状态”。投入25分钱之后,就会进入“有25分钱”状态。在“有25分钱”状态,就可以扭动曲柄改变原创 2022-03-11 21:11:14 · 190 阅读 · 0 评论 -
9 迭代器与组合模式
1.引入1.1 问题引入对象村餐厅和对象村煎饼屋合并了。可以在同一个地方享用煎饼屋的煎饼早餐和餐厅午餐。Lou Mel检查菜单项:MenuItem类的实现:public class MenuItem { String name; String description; boolean vegetarian; double price; public MenuItem(String name, String descriptio.原创 2022-03-01 14:16:04 · 384 阅读 · 0 评论 -
8.模板方法模式
原创 2022-02-25 15:32:02 · 103 阅读 · 0 评论 -
7.适配器模式和外观模式
1.适配器模式引入1.1 现实世界的适配器真实世界的适配器。比如,如果需要在欧洲国家使用美国制造的笔记本电脑,那就可能需要一个交流电的适配器。上图中适配器的作用:位于美式插头和欧式插座的中间,他的工作是将欧式插座转换成美式插座,好让美式插头可以插进这个插座得到电力。或者也可以这么认为:适配器改变了插座的接口,以符合美式笔记本电脑的需求。有些交流适配器相当简单,只是改变插座的形状来匹配你的插头,直接传送电流。而有些复杂的,是改变电流符合装置的需求。1.2 面向对象适配器假设已有一个原创 2022-02-22 22:00:23 · 789 阅读 · 0 评论 -
6 封装调用:命令模式
1.引入通过封装方法调用,可以把运算快包装成形。调用此运算的对象不需要关心事情是如何进行的,只要知道如何使用包装成形的方法来完成它就可以。通过封装方法调用,可以做一些很聪明的事情,例如记录日志,或者重复使用这些封装来实现撤销(undo).1.1 问题引入一家公司需要设计一个创新控制器,这个遥控器具有七个可编程的插槽(每个都可以指定到一个不同的家电装置),每个插槽都有对应的开关按钮。这个遥控器还具备一个整体的撤销按钮。现提供一组类,这些类由多家厂商开发出来的,用来控制家电自动化装置,例如电灯、原创 2022-02-22 13:55:22 · 287 阅读 · 0 评论 -
5 单例模式
1.单例模式引入1.1 引入有一些对象我们只需要一个,比如:线程池、缓存、对话框、处理偏好设置和注册表的对象。日志对象,充当打印机、显卡等设备的驱动程序的对象单例模式可以确保只有一个实例会被创建。单例模式给了我们一个全局的访问点,和全局变量一样方便,但又没有全局变量的缺点。全局变量的缺点:必须在程序一开始就创建好,如果这个对象非常耗费资源,而程序在这次的执行过程中又一直没用到他,那就形成了浪费。利用单例模式,可以在需要的时候才创建对象。1.2 剖析经典的单例模式实现这个版本的代码还是存在原创 2022-02-18 16:50:13 · 225 阅读 · 0 评论 -
4.工厂模式
1.绪1.1引入本章将准备好烘烤某些松耦合的OO设计。除了使用new操作符之外,还有更多制造对象的方法。将了解到实例化这个活动不应该总是公开的进行,也会认识到初始化经常造成“耦合”问题。本章的工厂模式将带你了解如何从复杂的依赖中帮你脱困。1.2 关于制造对象当看到“new”,就会想到“具体”当使用“new”时,就的确是在实例化一个具体类,因此用的确实是实现,而不是接口。因为代码绑着具体类,会导致代码更脆弱,更缺乏弹性。当有一群相关的具体类时,通常会写出这样的代码:这里原创 2022-02-18 11:48:11 · 337 阅读 · 0 评论 -
3 装饰者模式
1.绪运行时扩展,远比编译时期的继承威力更大。本章可以成为“给爱用继承的人一个全新的设计眼界”。本章将再度讨论典型的继承滥用问题。本章中将讲解如何使用对象组合的方式,做到运行时装饰类。一旦熟悉了装饰的技巧,则能够在不修改任何底层代码的情况下,给对象赋予新的职责。2.应用背景-问题引入咖啡店的故事:一家快速扩张的咖啡连锁店准备更新订单系统,以合乎他们的饮料供应要求。原先的类设计:购买咖啡时,可以要求在其中加入各种调料,例如:蒸奶(Steamed Milk)、豆浆(Soy)、摩卡(M原创 2022-02-07 21:48:06 · 340 阅读 · 0 评论 -
2.观察者模式
1.观察者模式有趣的事情发生时,可千万别错过了!有一个模式可以帮你的对象知悉现况,不会错过该对象感兴趣的事。对象甚至在运行时可决定是否要继续被通知。观察者模式是JDK中使用最多的模式之一,非常有用。我们也会-一并介绍一对多关系,以及松耦合(对,没错,我们说耦合)。有了观察者,你将会消息灵通。...原创 2021-09-30 12:19:37 · 193 阅读 · 0 评论 -
1.设计模式入门--策略模式
1.OO设计原则1.1 问题引入对应电子书的P38-P45简述:设计一个模拟鸭子的游戏,游戏中会出现各种鸭子,一边游泳,一边呱呱叫。此系统的内部设计使用了标准的OO技术,设计了一个鸭子的超类,并让各种鸭子继承此超类。需求更新1:增加新的鸭子类,如会飞的鸭子。解决方法--利用继承:Joe(书中的菜鸡,也就是本菜鸡本鸡了)提出的想法是在超类中添加一个fly()的抽象类方法:public abstract class Duck { abstract public..原创 2021-09-27 23:45:12 · 150 阅读 · 0 评论