摘要: 享元顾名思义共享单元 比如在网上围棋游戏中,可能同时有很多人在下棋,每个棋局一个棋盘+N个棋子。 如果有一百万人同时在线,每个棋局数百个棋子,那就需要上亿的棋子对象,这个显然是一种浪费。 因为棋子非黑即白,没有什么变化,这些棋子在不同的棋盘都可以共享的 我们首先定义一个棋子类,它只有颜色一个属性 p 阅读全文
posted @ 2022-02-01 20:53 Mars.wang 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式和代理模式非常相似,都是用来增强原始类的功能,只不过代理类增加了是业务逻辑之外无关的的功能。 装饰器是在基础功能上的继续增强相关的功能。 我们通过一个一个画笔的设计,通过装饰器模式给画笔添加新功能 首先定义了一个抽象类 public abstract class Pen { public 阅读全文
posted @ 2022-02-01 19:57 Mars.wang 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 设计模式种的组合模式不是类与类之间那个组合。 而是只业务逻辑种的那种树形数据结构,比如文件目录、公司的组织架构等。 这种模式在实际的项目开发中并不那么常用。但是,一旦数据满足树形结构,应用这种模式就能发挥很大的作用,能让代码变得非常简洁。 我们以文件目录为例,通过实现一个文件目录树来理解组合模式。 阅读全文
posted @ 2022-02-01 19:26 Mars.wang 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 适配器模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 对于这个模式,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼容的接口,通过转接变得可以一起工作。 适配器模式有两种实现方式:类适配器和对象适配器。其中,类适 阅读全文
posted @ 2022-02-01 17:28 Mars.wang 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。 感觉听完上面的描述,没有几个人能够描述桥接模式到达怎么实现。 据我个人的理解,桥接模式一般用于适用于以下情况,某个类的子类都多个维度的变化,如果都分别实现,可能会造成子类的爆炸。 可以把这种多角度分类分离出来,让它们独立变化,减 阅读全文
posted @ 2022-02-01 16:52 Mars.wang 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 工厂模式分为简单工厂、工厂方法和抽象工厂,主要用于将复杂对象的创建抽象到一个专门的工厂类中,从而将对象的使用和构建解耦。 我们以一个配置解析的例子来说明一下工厂模式。 比如在java项目中,我们会把一些不经常改变的配置信息(比如数据库连接等),写入配置文件,而配置文件有很多类型,比如json、xml 阅读全文
posted @ 2022-02-01 13:37 Mars.wang 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 构建者模式不难理解,实现起来也很简单。难点在于使用场景。 它一般适用于业务逻辑比较复杂的类,比如jdbc有很多参数,有一些是必填的,比如host、port、user、password,其他的则是可选参数。 如果按照正常的构造方法,参数可能会爆炸。而采用构造者模式,就会使得这个类的构建变得非常简单。 阅读全文
posted @ 2022-02-01 10:07 Mars.wang 阅读(467) 评论(0) 推荐(0) 编辑