![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式笔记
文章平均质量分 78
勉之~
遇事不怕,就怕没有解决的能力,不断提升自己,做一个勇往直前的人,Fighting!!!
展开
-
设计模式总结说明
23种设计模式总结 一 单例模式 目的 保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法 八种方式 (1) 饿汉式(静态常量) (2)饿汉式(静态代码块) (3)懒汉式(线程不安全) (4)懒汉式(线程安全,同步方法) (5)懒汉式(线程安全,同步代码块) (6)双重检查(推荐使用) (7)静态内部类(推荐使用) (8)枚举(推荐使用) JDK中的Runtime就是经典的单例模式 使用场景 需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:原创 2021-05-21 17:02:34 · 200 阅读 · 0 评论 -
Java设计模式之职责链模式
Java设计模式之职责链模式 学校OA系统采购审批项目问题 (1)如果金额 小于等于 5000, 由教学主任审批 (0<=x<=5000) (2)如果金额 小于等于 10000, 由院长审批 (5000<x<=10000) (3)如果金额 小于等于 30000, 由副校长审批 (10000<x<=30000) (4)如果金额 超过 30000 以上,有校长审批 ( 30000<x) 职责链模式基本介绍 (1)职责链模式(Chain of Responsibilit原创 2021-04-16 10:52:12 · 144 阅读 · 0 评论 -
Java设计模式之策略模式
Java设计模式之策略模式 编写鸭子项目问题 (1) 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) (2) 显示鸭子的信息 策略模式基本介绍 (1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式 让算法的变化独立于使用算法的客户 (2)这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体 类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策原创 2021-04-16 10:17:10 · 80 阅读 · 0 评论 -
Java设计模式之状态模式
Java设计模式之状态模式 app抽奖活动问题 请编写程序完成 APP 抽奖活动 具体要求如下: (1) 假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10% (2) 奖品数量固定,抽完就不能抽奖 (3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 (4) 活动的四个状态转换关系图(右图) 状态模式基本介绍 (1)状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换 (2)当一个对原创 2021-04-15 17:00:38 · 198 阅读 · 0 评论 -
Java设计模式之解释器模式
Java设计模式之解释器模式 四则运算问题 通过解释器模式来实现四则运算,具体要求 (1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 (2) 在分别输入 a ,b, c, d, e 的值 (3) 最后求出结果:如图 解释器模式基本介绍 (1)在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器 (2)解释器模式(Interpreter Patte原创 2021-04-15 16:02:51 · 72 阅读 · 0 评论 -
Java设计模式之备忘录模式
Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御 力下降,从备忘录对象恢复到大战前的状态 备忘录模式基本介绍 (1)备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 (2)备忘录模式属于行为型模式 (3)现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事原创 2021-04-15 14:49:54 · 73 阅读 · 0 评论 -
Java设计模式之中介者模式
Java设计模式之中介者模式 智能家庭项目问题 (1) 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 (2) 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放 中介者模式基本介绍 (1)中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 (2)中介者模式属于行为型模式,原创 2021-04-15 14:19:53 · 58 阅读 · 0 评论 -
Java设计模式之观察者模式
Java设计模式之观察者模式 天气预报项目需求 (1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 (2) 需要设计开放型 API,便于其他第三方也能接入气象站获取数据。 (3) 提供温度、气压和湿度的接口 (4) 测量数据更新时,要能实时的通知给第三方 观察者模式原理 观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,Subject通知 Observer 变化,比如这里的奶站是Subjec原创 2021-04-15 11:15:34 · 87 阅读 · 0 评论 -
Java设计模式之迭代器模式
Java设计模式之迭代器模式 学院院系需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图: 迭代器模式基本介绍 (1)迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式 (2)如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决 (3)迭代器模式,提供一种原创 2021-04-15 10:46:40 · 82 阅读 · 0 评论 -
Java设计模式之访问者模式
Java设计模式之访问者模式 测评系统的需求 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 访问者模式基本介绍 (1)访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前 提下定义作用于这些元素的新的操作 (2)主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题 (3)访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口 (4)访原创 2021-04-14 16:50:48 · 82 阅读 · 0 评论 -
Java设计模式之模板方法模式
Java设计模式之模板方法模式 豆浆制作问题 编写制作豆浆的程序,说明如下: (1) 制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎 (2) 通过添加不同的配料,可以制作出不同口味的豆浆 (3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 (4) 请使用 模板方法模式完成 模板方法模式基本介绍 (1)模板方法模式,又叫模板模式,在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 (2)模板方法原创 2021-04-14 15:11:17 · 104 阅读 · 0 评论 -
Java设计模式之代理模式
Java设计模式之代理模式 基本介绍 (1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 (2)被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 (3)代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK 代理、接口代理)和 Cglib 代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) (4)代理模式类图 静态代理 (1原创 2021-04-14 14:42:26 · 53 阅读 · 0 评论 -
Java设计模式之享元模式
Java设计模式之享元模式 展现网站项目问题 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网 站,但是要求都有些不同: (1) 有客户要求以新闻的形式发布 (2) 有客户人要求以博客的形式发布 (3) 有客户希望以微信公众号的形式发布 享元模式基本介绍 (1)享元模式(Flyweight Pattern) 也叫 蝇量模式: 运用共享技术有效地支持大量细粒度的对象 (2)常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,原创 2021-04-13 16:53:36 · 90 阅读 · 0 评论 -
Java设计模式之外观模式
Java设计模式之外观模式 影院管理问题 组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能, 其过程为: (1)直接用遥控器:统筹各设备开关 (2)开爆米花机 (3)放下屏幕 (4)开投影仪 (5)开音响 (6)开 DVD,选 dvd (7)去拿爆米花 (8)调暗灯光 (9)播放 (10)观影结束后,关闭各种设备 外观模式基本介绍 (1)外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,原创 2021-04-13 16:19:21 · 85 阅读 · 0 评论 -
Java设计模式之组合模式
Java设计模式之组合模式 学校院系展示问题 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 组合模式基本介绍 (1)组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。 (2)组合模式依据树形结构来组合对象,用来表示部分以及整体层次 (3)这种类型的设计模式属于结构型模式。 (4)组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能原创 2021-04-13 15:56:28 · 121 阅读 · 0 评论 -
Java设计模式之装饰者模式
Java设计模式之装饰者模式 咖啡馆订单问题 (1)咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) (2)调料:Milk、Soy(豆浆)、Chocolate (3)要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 (4)使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。 装饰者模式基本介绍 装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰原创 2021-04-13 15:13:20 · 90 阅读 · 1 评论 -
Java设计模式之桥接模式
Java设计模式之桥接模式 手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 桥接模式基本介绍 (1)桥接模式(Bridge 模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变 (2)是一种结构型设计模式 (3)Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应原创 2021-04-13 14:24:24 · 64 阅读 · 0 评论 -
Java设计模式之适配器模式
Java设计模式之适配器模式 基本介绍 (1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) (2)适配器模式属于结构型模式 (3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式 工作原理 (1)适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容 (2)从用户的角度看不到被适配者,是解耦的 (3)用户调用适配器转化出来的目标接原创 2021-04-12 16:20:10 · 82 阅读 · 1 评论 -
Java设计模式之建造者模式
Java设计模式之建造者模式 问题描述 (1) 需要建房子:这一过程为打桩、砌墙、封顶 (2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. (3) 请编写程序,完成需求. 建造者模式基本介绍 (1)建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 (2)建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对原创 2021-04-12 15:18:29 · 144 阅读 · 0 评论 -
Java设计模式之原型模式详解
Java设计模式之原型模式 基本介绍 (1)原型模式(Prototype 模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象 (2)原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节 (3)工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone() UML类图 说明: (1)Prototype:原型类,声明一个克隆自己的接口 (2)Concreteprot原创 2021-04-12 14:16:38 · 147 阅读 · 0 评论 -
Java设计模式之工厂模式
Java设计模式之工厂模式 一 简单工厂模式(静态工厂模式) 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 披萨的制作有 prepare,bake, cut, box 完成披萨店订购功能。 简单工厂模式设计方案 定义一个可以实例化Pizza对象的类.封装创建对象的代码 示例代码 //1 简单工厂类 public class SimpleFactory { //根据 orderType 返回对应的 Pizza 对象 pu原创 2021-04-10 11:39:09 · 68 阅读 · 0 评论 -
Java设计模式之单例模式
Java设计模式之单例模式 一 单例模式介绍及方式 介绍 单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 八种方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全,同步代码块) 双重检查 静态内部类 枚举 二 饿汉式 步骤 (1) 构造器私有化(防止new) (2) 类的内部创建对象 (3) 向外暴露一个静态的公共方法:getInstance翻译 2021-04-09 15:29:36 · 65 阅读 · 0 评论 -
Java设计模式七大原则详解
Java设计模式七大原则详解 一 单一职责原则 基本介绍 对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2 案例 以交通工具的用途为例 (1)方式一: public class SingleResponsibility1 { public static void main(String[] args) { // TODO Auto-generated me原创 2021-04-08 14:00:35 · 163 阅读 · 0 评论