摘要:
String类是Java编程中应用最广泛的类,所以每一位程序员都应该仔细研究一番String类的内部实现,这样对我们理解String对象的工作机制、避免错误和提升代码效率有很大好处。你若打开Java语言规范 (Java 9),可以看到4.3.3节中对String对象的简述[1]: String对象的 阅读全文
摘要:
String类是Java编程中应用最广泛的类,所以每一位程序员都应该仔细研究一番String类的内部实现,这样对我们理解String对象的工作机制、避免错误和提升代码效率有很大好处。你若打开Java语言规范 (Java 9),可以看到4.3.3节中对String对象的简述[1]: String对象的 阅读全文
摘要:
电子游戏过去都会有一个“记录”或者“存盘”的功能,就是当玩家在游戏过程中将当前的游戏状态记录下来,以便于之后重新登录游戏后读取到记录时的状态。这种将对象的状态先保存起来,以后再根据保存的数据恢复对象状态的设计模式,就是备忘录模式。 1. 备忘录模式 备忘录模式的UML类图为: Originator: 阅读全文
摘要:
遍历元素在编程中十分常用,毋庸置疑只要是一个容器,都应该提供遍历其内部元素的方式,这就是本文介绍的迭代器模式。 1.迭代器模式 迭代器模式(Iterator pattern) 提供一个迭代器,它可以按顺序遍历并访问容器中的元素,而无需暴露迭代器的内部实现。 迭代器模式如此常用,以至于Java标准库中 阅读全文
摘要:
电灯开关一般有两个状态:开和关,通过按下开关可以关闭或者打开电灯。那么,“开”和“关”实际上应该是开关的两种内部状态,当开关的状态发生变化时,其行为也会发生变化,比如,开关状态变为了“关”,那么就应该熄灯 并且使能“开”。 1.状态模式 状态模式的定义如下: 状态模式(State Pattern), 阅读全文
摘要:
交通信号灯相信大家都不陌生,红灯停、绿灯行,见了黄灯等一等。交通信号灯、海边的信号塔等等,都伫立在那里,随时准备给行人/货船发送信号,以提醒行人/货船该采取相应行动了。信号灯就是发布信号的对象,行人是接收信号并采取具体行动的观察者。这一过程,在程序设计中也常常用到,即本文介绍的观察者模式。 1.观察 阅读全文
摘要:
电子设备之间有线数据传输常用USB来进行,例如现在某果笔记本统一采用了USB type-c接口,而目前绝大多数即用即插存储介质用的是USB type-b接口,那么为了适配,往往需要消费者购买转换坞等中间设备进行过渡,这种模式其实就是程序设计中常用的适配器模式,另一个形象的实例就是扳手为了拧动型号的螺 阅读全文
摘要:
当你翻看一本新书的时候,总是会首先翻到书的目录页,通过目录,让你知道书的主要内容是什么,每一章的内容是从哪一页开始。对的,目录就像是一本书的窗口。本文要介绍的外观模式或者叫做门面模式,正如书的目录一样,往往充当着一个或者多个子系统窗口的角色。 1.外观模式 外观模式(Facade Pattern) 阅读全文
摘要:
创建一个对象,有时候是很复杂的一件事,比如在模板方法模式中讲到的Car对象,创建它,就需要装配底盘、轮胎、发动机、车身等部件,甚至之后还需要喷漆等工序。模版方法模式,主要解决的是算法中不变部分与可变部分的解耦,将可变部分算法推迟到子类中去实现;而本文要介绍的建造者模式,则是一种创建模式,顾名思义,就 阅读全文
摘要:
抽象是面向对象编程的核心思想,从某种角度来看,抽象,就是把可变的部分和不可变部分分离开来,今天介绍的模板方法模式,体现的就是这样一种思想。总结起来,模板方法模式可以用一句话来概括:以不变应万变。 1.模板方法模式 模板方法模式(Template Method Pattern),定义了一个算法的骨架, 阅读全文
摘要:
细胞的有丝分裂会产生两个基因相同的细胞,基因相同就表示它们一模一样。这一过程很像代码设计中的一个设计模式,即原型模式。 1.原型模式 原型模式(Prototype Pattern),就是以一个现有的对象为原型,克隆出一个或多个一模一样的对象。 原型模式的UML类图: Prototype(抽象原型类) 阅读全文
|