随笔分类 - 设计模式
摘要:灵感来源于一个猪队友给我的题目 看到这个,我抓住的关键字是:任何子任务失败,要通知所有子任务执行取消逻辑。 这不就是消息广播吗?观察者模式! 干活 首先是收听者 package com.example.broadcast; /** * 每个节点即是广播者,也是收听者 */ public interf
阅读全文
摘要:命令模式 以网上很多人的例子:点餐。 以前吃烧烤,每一个客人都是直接跟烧烤师傅说吃什么,烧烤师傅【又要烧烤又要记住每个客人点了什么】记性差。这里是行为请求者和行为实现者的紧耦合,不好。 现在呢,每个烧烤摊有个服务员,客人想吃啥,直接跟服务员说,服务员把每一份订单给烧烤师傅看,烧烤师傅【只需要根据单子
阅读全文
摘要:观察者模式是对象的行为模式。又叫做发布-订阅模式、模型-视图模式、源-监听器模式。 抽象主题角色:主题角色将所有对观察者对象的引用到保存在一个集合里,每个主题都可以拥有任意数量的观察者。抽象主题提供一个接口,可以增加或者删除观察者对象。主题角色又叫被观察者。 具体主题角色:将有关状态存入具体观察者对
阅读全文
摘要:静态代理 抽象主题角色:声明真实主题和代理主题的共同接口。 代理主题角色:代理主题内部含有对真实主题的引用,从而在任何时候操作真实主题对象;代理主题提供一个与真实主题相同的接口,以便在任何时候都可以代替真实主题。代理角色通常在将客户端调用传递给真实的主题之前或之后,都要执行某个操作,而不是单纯的传递
阅读全文
摘要:装饰器模式 抽象构件角色:给出一个抽象接口,以规范准备接受附加责任的对象。 具体构件角色:定义准备接受附加责任的对象。 抽象装饰角色:持有一个构件对象的实例,并对应一个与抽象构件接口一致的接口。 具体装饰角色:负责给具体构件加上额外的责任。 什么时候使用: 1. 需要扩展一个类的功能,或者给一个类增
阅读全文
摘要:合成模式:合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象等同看待。 两种形式:根据所实现的接口分为安全式和透明式 合成模式可以不提供父对象的管理方法,但是合成模式必须在合适的地方提供子对象的管理方法。 安全式 安全式的合成模式要求管理聚
阅读全文
摘要:我认为这个模式比较常见,还记得我们学习Swing的时候吗,有没有见过很多Adapter?那时候不知道Adapter的意义所在,但至少知道他能够省去我们不需要的实现。 这个社会有N中职业(job),但是每个人(people)只可能从事其中一种或者几种,职业类型设成一个接口,难道每次给人设置职业的时候要
阅读全文
摘要:适配器模式:把一个类的接口变成客户端所期待的另一种接口,使原本因接口不匹配而不能一起工作的两个类能够一起工作。 适配器有两种形式:类的适配器和对象的适配器。 类的适配器模式 结构图: 可以看出,Adaptee并没有operateB,而客户端期待这个方法。为了让客户端能使用Adaptee类,增加了一个
阅读全文
摘要:+ :代表public - :代表private # :代表protected 实现,继承关系:implements,extends 关联关系:使一个类知道另一个类的属性和方法 每一个Driver类里面都有一个Car的实例变量。 聚合关系:表示整体和部分的关联关系。 一个汽车由:引擎以及多个轮胎组成
阅读全文
摘要:饿汉单例模式: 当这个类被加载时,静态变量 EAGER_SINGLETON 就会被初始化。 懒汉式单例: 【区别】饿汉单例模式在自己被加载时就将自己实例化。从资源利用的角度讲,饿汉比懒汉差点。从速度和反应时间来讲,饿汉比懒汉块。懒汉在实例化的时候,需要处理多线程的问题。 还有一种用的比较多的 静态内
阅读全文
摘要:角色: 抽象工厂角色:担任这个角色是模式的核心,他应该是与应用商业系统无关的。通常是Java接口或Java抽象类,其他的具体工厂类必须实现这个Java接口或继承这个Java抽象类。 具体工厂角色:这个角色直接在客户端的调用下创建产品的实例,这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统
阅读全文
摘要:角色 抽象工厂:担任这个角色是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。 具体工厂:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。 抽象产品:工厂方法模式所创建对象的超类
阅读全文
摘要:简单工厂模式,又称为静态方法工厂模式。结构图如下: 实现: 水果接口: 实现类: 工厂: 输出:
阅读全文