![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 91
GeorgeLin98
努力!
展开
-
设计模式知识概括
设计模式知识概括设计模式概述常用设计模式 设计模式概述 设计模式层次: 第 1 层: 刚开始学编程不久, 听说过什么是设计模式 第 2 层: 有很长时间的编程经验, 自己写了很多代码, 其中用到了设计模式, 但是自己却不知道 第 3 层: 学习过了设计模式, 发现自己已经在使用了, 并且发现了一些新的模式挺好用的 第 4 层: 阅读了很多别人写的源码和框架, 在其中看到别人设计模式, 并且能够领会设计模式的精妙和带来的好处。 第 5 层: 代码写着写着, 自己都没有意识到使用了设计模式, 并且熟练的写了出原创 2022-04-26 18:27:08 · 285 阅读 · 0 评论 -
职责链设计模式知识概括
职责链设计模式知识概括职责链设计模式简介职责链模式解决 OA 系统审批HandlerExecutionChain职责链模式的注意事项和细节 职责链设计模式简介 OA 系统采购审批需求: 学校 OA 系统的采购审批项目: 需求是采购员采购教学器材 ①如果金额 小于等于 5000,由教学主任审批 (0<=x<=5000) ②如果金额 小于等于 10000, 由院长审批 (5000<x<=10000) ③如果金额 小于等于 30000,由副校长审批 (10000<x<=300原创 2020-10-14 12:36:43 · 73 阅读 · 0 评论 -
策略设计模式知识概括
策略设计模式知识概括策略设计模式简介策略模式解决鸭子问题JDK Arrays 源码分析策略模式的注意事项和细节 策略设计模式简介 编写鸭子项目: 编写鸭子项目,具体要求如下: 有各种鸭子(比如野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如叫、飞行等) 显示鸭子的信息 传统方案解决方案: 类图: 代码实现: Duck:鸭子的抽象父类 public abstract class Duck { public Duck() { } public abstract void display();//原创 2020-10-14 12:36:35 · 90 阅读 · 0 评论 -
访问者设计模式知识概括
访问者设计模式知识概括访问者设计模式简介访问者模式完成测评系统访问者模式的注意事项 访问者设计模式简介 测评系统的需求: 完成测评系统需求 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同的种类,比如成功、失败等) 传统方式完成测评系统: 传统方式的问题分析 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp原则, 不利于维护 传统方式的扩展性不好,比如增加了新的人员类型,或者管理方法,都不好扩展 引出我们会使原创 2020-10-14 12:36:27 · 176 阅读 · 0 评论 -
状态设计模式知识概括
状态设计模式知识概括状态设计模式简介状态模式解决 APP 抽奖问题状态模式在实际项目的应用状态模式的注意事项和细节 状态设计模式简介 APP 抽奖活动问题: 请编写程序完成APP抽奖活动,具体要求如下: 假如每参加一次这个活动要扣除用户50积分,中奖概率是10% 奖品数量固定,抽完就不能抽奖 活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完 活动的四个状态转换关系图: 状态模式基本介绍: 状态模式(StatePattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态原创 2020-10-14 12:37:04 · 134 阅读 · 0 评论 -
解释器设计模式知识概括
解释器设计模式知识概括解释器设计模式简介解释器模式来实现四则运算Spring SpelExpressionParser解释器模式的注意事项和细节 解释器设计模式简介 四则运算问题: 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 ①先输入表达式的形式,比如 a+b+c-d+e,要求表达式的字母不能重复 ②在分别输入 a, b, c, d, e 的值 ③最后求出结果:如图 传统方案解决四则运算问题分析: 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果 问题分析:如原创 2020-10-13 16:29:38 · 131 阅读 · 0 评论 -
备忘录设计模式知识概括
备忘录设计模式知识概括备忘录设计模式简介备忘录模式解决游戏角色恢复备忘录模式的注意事项和细节 备忘录设计模式简介 游戏角色状态恢复问题: 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力), 当大战Boss后攻击力和防御力下降,然后从备忘录对象恢复到大战前的状态 传统方案解决游戏角色恢复: 类图: 传统的方式的问题分析: 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大 传统的方式是简单地做备份, new 出另外一个对象出来,再把原创 2020-10-13 16:29:15 · 185 阅读 · 0 评论 -
中介者设计模式知识概括
中介者设计模式知识概括中介者设计模式简述中介者模式解决智能家庭管理问题中介者模式的注意事项和细节 中介者设计模式简述 智能家庭项目: 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为: 闹铃响起 --> 咖啡机开始做咖啡 --> 窗帘自动落下 --> 电视机开始播放 传统方案解决智能家庭管理问题: 类图: 传统的方式的问题分析: 当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂 各个电器对象原创 2020-10-13 16:29:00 · 68 阅读 · 0 评论 -
观察者设计模式知识概括
观察者设计模式知识概括一级目录观察者模式解决天气预报需求Jdk Observable 源码分析 一级目录 天气预报项目需求: 天气预报项目需求,具体要求如下: 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方) 需要设计开放型API,便于其他第三方也能接入气象站获取数据 提供温度、气压和湿度的接口 测量数据更新时,要能实时的通知给第三方 传统方式的思路: WeatherData类: ①通过对气象站项目的分析,我们可以初步设计出一个WeatherData类原创 2020-10-13 16:28:48 · 120 阅读 · 0 评论 -
迭代器设计模式知识概括
迭代器设计模式知识概括迭代器设计模式简介迭代器模式解决学校院系展示需求JDK ArrayList 源码分析迭代器模式的注意事项 迭代器设计模式简介 学校院系展示需求: 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。 如图: 传统的方式的问题分析: 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 : 在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种原创 2020-10-13 16:28:36 · 143 阅读 · 0 评论 -
命令设计模式知识概括
命令设计模式知识概括命令设计模式简介命令模式解决智能生活项目Spring JdbcTemplate命令模式的注意事项 命令设计模式简介 智能生活项目需求: 我们买了一套智能家电, 有照明灯、 风扇、 冰箱、 洗衣机, 我们只要在手机上安装 app 就可以控制对这些家电工作。 这些智能家电来自不同的厂家, 我们不想针对每一种家电都安装一个 App, 分别控制, 我们希望只要一个 app 就可以控制全部智能家电。 要实现一个 app 控制所有智能家电的需要, 则每个智能家电厂家都要提供一个统一的接口给 app原创 2020-10-13 16:28:21 · 92 阅读 · 0 评论 -
享元设计模式知识概括
享元设计模式知识概括享元设计模式简介享元模式解决网站展现项目JDK Interger 源码分析享元模式的注意事项 享元设计模式简介 展示网站项目需求: 小型的外包项目,给客户A做一个产品展示网站, 客户A的朋友感觉效果不错,也希望做这样产品展示网站,但是要求都有些不同: ①有客户要求以新闻的形式发布 ②客户人要求以博客的形式发布 ③有客户希望以微信公众号的形式发布 传统方案解决网站展现项目: 方案描述: ①直接复制粘贴一份,然后根据客户不同要求,进行定制修改 ②给每个网站租用一个空间 ③方案设计示意图原创 2020-10-13 16:27:41 · 103 阅读 · 0 评论 -
代理设计模式知识概括
代理设计模式知识概括代理模式的基本介绍静态代码模式动态代理模式Cglib 代理模式代理模式(Proxy)的变体 代理模式的基本介绍 代理模式的基本介绍: 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。 即通过代理对象访问目标对象。 代理对象的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、 创建开销大的对象或需要安全控制的对象 代理模式有不同的形式,主要有三种:静态代理、 动态代理 (JDK代理、接口代理)和 Cglib代理 (可以在原创 2020-10-13 16:27:33 · 98 阅读 · 0 评论 -
模板方法设计模式知识概括
模板方法设计模式知识概括模板方法设计模式简介模板方法模式解决豆浆制作问题模板方法模式的钩子方法Spring 框架中的模板方法模式模板方法模式的注意事项 模板方法设计模式简介 豆浆制作问题: 编写制作豆浆的程序, 说明如下: 制作豆浆的流程:选材—>添加配料—>浸泡—>放到豆浆机打碎 通过添加不同的配料, 可以制作出不同口味的豆浆 选材、 浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用模板方法模式完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案, 因此原创 2020-10-13 16:27:23 · 174 阅读 · 0 评论 -
外观设计模式知识概括
外观设计模式知识概括外观设计模式介绍外观模式解决影院管理Mybatis 外观模式外观模式的注意事项 外观设计模式介绍 影院管理项目: 组建一个家庭影院:DVD 播放器、 投影仪、 自动屏幕、 环绕立体声、 爆米花机,要求完成使用家庭影院的功能, 其过程为:直接用遥控器统筹各设备开关 ①开爆米花机 ②放下屏幕 ③开投影仪 ④开音响 ⑤开 DVD, 选 DVD ⑥去拿爆米花 ⑦调暗灯光 ⑧播放 ⑨观影结束后, 关闭各种设备 传统方式解决影院管理: 每个设备都对应于一个类,导致客户端使用时,直接依赖于具体的原创 2020-10-13 16:27:46 · 187 阅读 · 0 评论 -
组合设计模式知识概括
组合设计模式知识概括组合设计模式简介:组合模式解决学校院系问题JDK HashMap 组合模式组合模式的注意事项 组合设计模式简介: 学校院系展示需求: 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。 如图: 传统方案解决学校院系展示(类图): 传统方案解决学校院系展示存在的问题分析: 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多原创 2020-10-12 20:16:55 · 188 阅读 · 0 评论 -
装饰者设计模式知识概括
装饰者设计模式知识概括装饰者设计模式简述装饰者模式解决咖啡订单JDK FileInputStream 装饰者设计模式简述 星巴克咖啡订单项目(咖啡馆): 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、 ShortBlack、 LongBlack(美式咖啡)、 Decaf(无因咖啡)调料: Milk、 Soy(豆浆)、 Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 使用OO的来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡 + 调料组合 方案1:解原创 2020-10-12 20:04:51 · 143 阅读 · 0 评论 -
桥接设计模式知识概括
桥接设计模式知识概括桥接模式介绍桥接模式解决手机问题JDBC 源码剖析桥接模式的注意事项桥接模式应用场景 桥接模式介绍 手机操作问题: 现在对不同手机类型、不同品牌的手机实现操作编程(比如:开机、关机、上网,打电话等) 传统方案解决手机问题: 类图 传统方案解决手机操作问题分析 ①扩展性问题(类爆炸), 如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加 ②违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增原创 2020-10-12 19:52:54 · 131 阅读 · 0 评论 -
适配器设计模式知识概括
适配器设计模式知识概括适配器模式基本介绍类适配器模式对象适配器模式接口适配器模式SpringMVC 源码适配器模式的注意事项 适配器模式基本介绍 现实生活中的适配器例子: 泰国旅游使用插座问题:泰国插座用的是两孔的(欧标) ,可以买个多功能转换插头 (适配器) ,这样就可以使用了 适配器模式基本介绍: 适配器模式(AdapterPattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。 适配器的别名为包装器(Wrapper)原创 2020-10-12 16:59:05 · 181 阅读 · 0 评论 -
建造者设计模式知识概括
建造者设计模式知识概括传统方式解决盖房问题建造者模式基本介绍JDK StringBuilder建造者模式注意事项 传统方式解决盖房问题 盖房项目实际需求: 需要建房子:这一过程为打桩、 砌墙、封顶 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是各自实现的细节不同 传统方式解决盖房问题: 类图: 代码实现: AbstractHouse:房子的抽象父类,指定建造房子的规范,以及建造房子的具体流程 public abstract class AbstractHouse {原创 2020-10-12 16:38:52 · 88 阅读 · 0 评论 -
原型设计模式知识概括
原型设计模式知识概括克隆羊问题原型模式的介绍原型模式的原理原型模式代码示例Spring 原型模式深拷贝与浅拷贝原型模式注意事项 克隆羊问题 克隆羊问题描述: 现在有一只羊tom, 姓名为: tom,年龄为: 1, 颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊 传统模式解决克隆羊问题: 类图: 代码实现: Sheep:羊的实体类 public class Sheep { private String name; private int age; private String co原创 2020-10-12 16:21:08 · 184 阅读 · 0 评论 -
工厂设计模式知识概括
工厂设计模式知识概括简单工厂模式工厂方法模式抽象工厂模式JDK Calendar工厂模式小结 简单工厂模式 简单工厂模式的实际需求: 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 披萨的制作有 prepare、bake、cut、box 完成披萨店订购功能 传统方式的代码实现: 类图设计: 代码实现: Pizza 抽象父类: //将Pizza 类做成抽象 public abstract class Pizza { pr原创 2020-10-12 14:44:07 · 150 阅读 · 0 评论 -
单例设计模式知识概括
单例设计模式知识概括单例设计模式介绍单例设计模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全, 同步方法)懒汉式(线程安全, 同步代码块)懒汉式(双重检查)懒汉式(静态内部类)饿汉式(枚举)Rumtime 单例模式单例模式注意事项 单例设计模式介绍 所谓类的单例设计模式, 就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如 Hibernate 的 SessionFactory, 它充当数据原创 2020-10-12 14:11:29 · 163 阅读 · 0 评论 -
UML 类图知识概括
设计模式UML 类图知识概括UML类图使用UML 基本介绍UML 图UML 类图关系 UML类图使用 ) 具体参数说明: Note:对象UML 进行注释说明 Class:表示类,可以添加属性和方法 Interface:表示接口,可以添加抽象方法 Dependency:表示依赖(使用) Association:表示关联 Generalization:表示泛化(继承) Realization:表示实现 Aggregation:表示聚合 Composite:表示组合 UML 基本介绍 UML——Unifi原创 2020-10-12 13:35:16 · 1054 阅读 · 0 评论 -
设计模式七大原则知识概括
设计模式知识概括策略模式门面模式 策略模式 dbUtils 里的 bean的获取 反射里 invocationhander的获取 门面模式 jdbc接口 医院功能 接待员原创 2020-10-12 13:09:41 · 164 阅读 · 0 评论