随笔分类 -  Java设计模式

摘要:职责链模式 一、职责链模式 1.基本介绍 1)职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。 2)职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能 阅读全文
posted @ 2019-08-11 21:17 思丿无邪 阅读(159) 评论(0) 推荐(0) 编辑
摘要:策略模式 一、策略模式(Strategy Pattern) 1.基本介绍 1)策略模式中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 2)这算法体现了几个设计原则: + 把变化的代码从不变的代码中分离出来 + 针对接口编程而不是具体类(定义了策 阅读全文
posted @ 2019-08-11 18:00 思丿无邪 阅读(209) 评论(0) 推荐(0) 编辑
摘要:状态模式 一、状态模式 1.状态模式 1)状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换 2)当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类 2.原理类图 1)Conte 阅读全文
posted @ 2019-08-11 17:33 思丿无邪 阅读(276) 评论(0) 推荐(0) 编辑
摘要:解释器模式 一、应用实例 通过解释器模式来实现四则运算,如计算a+b c的值。具体要求 1)先输入表达式的形式,比如a+b+c d+e,要求表达式的字母不能重复。 2)分别输入a,b,c,d,e,返回结果。 二、解释器模式 1.基本介绍 1)在编译原理中,一个算术表达式通过词法分析器形成词法单元,而 阅读全文
posted @ 2019-08-11 17:01 思丿无邪 阅读(125) 评论(0) 推荐(0) 编辑
摘要:备忘录模式 一、备忘录模式(Memento Pattern) 1.基本介绍 1) 备忘录模式 (Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 2)备忘录对象主要用来记录一种状态,或者某些数据,当要 阅读全文
posted @ 2019-08-11 15:01 思丿无邪 阅读(188) 评论(0) 推荐(0) 编辑
摘要:中介者模式 一、中介者模式(Mediator Pattern) 1.基本介绍 1)用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 2)中介者模式属于行为型模式,使代码易于维护 3)比如MVC模式,C(Controller 阅读全文
posted @ 2019-08-11 14:40 思丿无邪 阅读(131) 评论(0) 推荐(0) 编辑
摘要:观察者模式 一、应用实例 1)气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 2)需要设计开放型API,便于其他第三方也能接入气象站获取数据。 3)提供温度、气压和湿度的接口 4)测量数据更新时,要能实时的通知给第三方 二、观察者模式 1.基本介绍 阅读全文
posted @ 2019-08-11 08:30 思丿无邪 阅读(133) 评论(0) 推荐(0) 编辑
摘要:迭代器模式 一、迭代器模式 1.基本介绍 1)如果我们集合元素是用不同的方式实现的,有数组,还有java的集合类等,当客户端要遍历这些集合元素时就要使用多种遍历方式,还会暴露元素的内部结构,可以考虑使用迭代器模式解决。 2)提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象 阅读全文
posted @ 2019-08-11 08:03 思丿无邪 阅读(190) 评论(0) 推荐(0) 编辑
摘要:访问者模式 一、应用实例 将观众分为男和女,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(成功、失败等) 二、访问者模式 1.基本介绍 1)封装一些作用于某种数据结构的各元素操作,在不改变数据结构的前提下定义作用于这些元素的新的操作。 2)将数据结构与数据操作分离,解决 数据结构 阅读全文
posted @ 2019-08-11 07:30 思丿无邪 阅读(140) 评论(0) 推荐(0) 编辑
摘要:命令模式 一、应用实例 1)一套智能家电,有照明灯、风扇、冰箱、洗衣机 2)这些家电来自不同的厂家,我们不想针对每一种家电都安装一个app,希望通过一个app可以控制全部 3)要实现一个app控制所有家电,则每个家电厂家要提供一个统一的接口给app调用。这时可以考虑使用命令模式。 4)命令模板可将“ 阅读全文
posted @ 2019-08-11 06:55 思丿无邪 阅读(225) 评论(0) 推荐(0) 编辑
摘要:模板方法模式 一、应用实例 编写制作豆浆的程序 1)制作豆浆的流程 选择 添加配料 浸泡 放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡、打碎步骤一样 二、模板方法模式 1.基本介绍 1)模板模式在一个抽象类公开定义了执行它的方法的模板。子类可以按需重写方法实现,但 阅读全文
posted @ 2019-08-11 06:16 思丿无邪 阅读(176) 评论(0) 推荐(0) 编辑
摘要:代理模式 一、代理模式 基本介绍 1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,扩展目标对象的功能。 2)被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3)代理模式有不同的形式,主要有三种 静 阅读全文
posted @ 2019-08-06 23:13 思丿无邪 阅读(221) 评论(0) 推荐(0) 编辑
摘要:享元模式 一、应用实例 ​ 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 1)有客户要求以新闻的形式发布 2)有客户要求以博客的形式发布 3)有客户希望以微信公众号的形式发布 二、享元模式 1.基本介绍 1)享元模式也叫蝇量模 阅读全文
posted @ 2019-08-06 22:04 思丿无邪 阅读(152) 评论(0) 推荐(0) 编辑
摘要:外观模式 一、实例项目 组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求直接用遥控器:统筹各设备开关 开爆米花机、放下屏幕、开投影仪、开音响、开DVD,去拿爆米花、调暗灯光、播放、观影结束后,关闭各种设备 二、外观模式(Facade) 1、基本介绍 1)外观模式,也叫过 阅读全文
posted @ 2019-08-06 01:01 思丿无邪 阅读(161) 评论(0) 推荐(0) 编辑
摘要:组合模式 一、应用实例 编写程序展示一个学校院系结构:要在一个页面中展示学校的院系组成,一个学校有多个学院,一个学院有多个系。 二、组合模式(Composite Pattern) 1.基本介绍 1)组合模式,又叫部分整体模式,将对象组合成树状结构。 2)组合模式使用户对单个对象和组合对象的访问具有一 阅读全文
posted @ 2019-08-04 23:49 思丿无邪 阅读(184) 评论(0) 推荐(0) 编辑
摘要:装饰者模式 一、应用实例 咖啡订单项目 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack、Decaf 2)调料:Milk、Soy、Chocolate 3)要求在扩展新的咖啡种类时,有良好的扩展性、改动方便。 二、装饰者模式 动态的将新功能附加到对象 阅读全文
posted @ 2019-08-04 23:23 思丿无邪 阅读(129) 评论(0) 推荐(0) 编辑
摘要:桥接模式 一、实例问题 对不同手机类型的不同品牌实现一些操作(如:开机、关机、上网、打电话) 二、桥接模式 1.基本介绍 1)将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变 2)是一种结构型设计模式 3)Bridge模式基本类的最小设计原则,通过使用封装、聚合及集成等行为让不同的类承担不 阅读全文
posted @ 2019-08-04 22:22 思丿无邪 阅读(172) 评论(0) 推荐(0) 编辑
摘要:适配器模式 一、基本介绍 1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,目的是兼容性。 2)适配器模式属于结构型模式 3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式 二、类适配器模式 1.类适配器模式 基本介绍:Adapter类,通过 阅读全文
posted @ 2019-08-04 21:51 思丿无邪 阅读(230) 评论(0) 推荐(0) 编辑
摘要:建造者模式 一、盖房项目需求 1)建房过程:打桩、砌墙、封顶 2)房子有多种样式:普通房、高楼、别墅。各种房子建造过程一样,要求不同 二、传统方式解决盖房需求 1.思路分析图解 2.代码实现 3.传统方式分析 1)过于简单,没有设计缓存层对象,程序的扩展和维护不好,这种方案把产品(房子)和创建产品的 阅读全文
posted @ 2019-08-03 22:21 思丿无邪 阅读(199) 评论(0) 推荐(1) 编辑
摘要:原型模式 一、克隆羊问题 ​ 现在有一只羊tom,姓名为tom,年龄为1,颜色为白色,编写程序创建和tom羊属性完全相同的10只羊。 二、传统方式 1.代码实现 2.传统方式的优缺点 1)优点是比较好理解,简单易操作。 2)在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时, 阅读全文
posted @ 2019-08-01 23:17 思丿无邪 阅读(200) 评论(0) 推荐(0) 编辑