上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 81 下一页
摘要: 享元顾名思义共享单元 比如在网上围棋游戏中,可能同时有很多人在下棋,每个棋局一个棋盘+N个棋子。 如果有一百万人同时在线,每个棋局数百个棋子,那就需要上亿的棋子对象,这个显然是一种浪费。 因为棋子非黑即白,没有什么变化,这些棋子在不同的棋盘都可以共享的 我们首先定义一个棋子类,它只有颜色一个属性 p 阅读全文
posted @ 2022-02-01 20:53 Mars.wang 阅读(70) 评论(0) 推荐(0)
摘要: 装饰器模式和代理模式非常相似,都是用来增强原始类的功能,只不过代理类增加了是业务逻辑之外无关的的功能。 装饰器是在基础功能上的继续增强相关的功能。 我们通过一个一个画笔的设计,通过装饰器模式给画笔添加新功能 首先定义了一个抽象类 public abstract class Pen { public 阅读全文
posted @ 2022-02-01 19:57 Mars.wang 阅读(52) 评论(0) 推荐(0)
摘要: 设计模式种的组合模式不是类与类之间那个组合。 而是只业务逻辑种的那种树形数据结构,比如文件目录、公司的组织架构等。 这种模式在实际的项目开发中并不那么常用。但是,一旦数据满足树形结构,应用这种模式就能发挥很大的作用,能让代码变得非常简洁。 我们以文件目录为例,通过实现一个文件目录树来理解组合模式。 阅读全文
posted @ 2022-02-01 19:26 Mars.wang 阅读(110) 评论(0) 推荐(0)
摘要: 适配器模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 对于这个模式,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼容的接口,通过转接变得可以一起工作。 适配器模式有两种实现方式:类适配器和对象适配器。其中,类适 阅读全文
posted @ 2022-02-01 17:28 Mars.wang 阅读(410) 评论(0) 推荐(0)
摘要: 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。 感觉听完上面的描述,没有几个人能够描述桥接模式到达怎么实现。 据我个人的理解,桥接模式一般用于适用于以下情况,某个类的子类都多个维度的变化,如果都分别实现,可能会造成子类的爆炸。 可以把这种多角度分类分离出来,让它们独立变化,减 阅读全文
posted @ 2022-02-01 16:52 Mars.wang 阅读(83) 评论(0) 推荐(0)
摘要: 工厂模式分为简单工厂、工厂方法和抽象工厂,主要用于将复杂对象的创建抽象到一个专门的工厂类中,从而将对象的使用和构建解耦。 我们以一个配置解析的例子来说明一下工厂模式。 比如在java项目中,我们会把一些不经常改变的配置信息(比如数据库连接等),写入配置文件,而配置文件有很多类型,比如json、xml 阅读全文
posted @ 2022-02-01 13:37 Mars.wang 阅读(235) 评论(0) 推荐(0)
摘要: 构建者模式不难理解,实现起来也很简单。难点在于使用场景。 它一般适用于业务逻辑比较复杂的类,比如jdbc有很多参数,有一些是必填的,比如host、port、user、password,其他的则是可选参数。 如果按照正常的构造方法,参数可能会爆炸。而采用构造者模式,就会使得这个类的构建变得非常简单。 阅读全文
posted @ 2022-02-01 10:07 Mars.wang 阅读(506) 评论(0) 推荐(0)
摘要: 在实际的软件开发中,状态模式不是很常用,但在一些能够用到的场景里,能发挥非常大的作用。 状态模式一般用于实现状态机,而状态机一般用在游戏、工作流引擎等软件开发中。 状态机有三个组成部分:状态、事件和动作。触发某个事件可以改变对象的状态。 以超级马里奥这个小游戏为例,一进入游戏是个小马里奥,吃到蘑菇就 阅读全文
posted @ 2022-01-31 16:05 Mars.wang 阅读(2217) 评论(0) 推荐(0)
摘要: 策略模式是指根据不同的对象,来采取不同的策略,其实这种场景非常场景。 促销活动中的打折就是最常见的一张。我们会根据这个客户的类型、或者他参与的活动的类型,或者是购物金额的不同采用不同的打折策略。 首先我们定义一个策略接口类 public interface Strategy { Double dis 阅读全文
posted @ 2022-01-25 17:12 Mars.wang 阅读(79) 评论(0) 推荐(0)
摘要: 命令模式将请求封装成一系列对象,对象里包含指令和数据。 在分布式架构中,master需要给worker分发任务,worker完成后需要把任务处理结果返回给master。 master/worker之间的信息交互会有很多不同的指令和数据,这种不同消息的实现就可以采用命令模式。 我们首先定义一个命令对象 阅读全文
posted @ 2022-01-25 13:48 Mars.wang 阅读(66) 评论(0) 推荐(0)
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 81 下一页