设计模式
文章平均质量分 92
minge0001
此人不懒,但也是什么都没写。
展开
-
设计模式(23)——职责链模式
学校OA系统的采购审批项目采购员采购教学器材如果金额 小于等于5000,由教学主任审批(0<=x<=5000)如果金额 小于等于10000,由院长审批(5000<x<=10000)如果金额 小于等于30000,由副校长审批(10000<x<=30000)如果金额 超过30000以上,由校长审批(30000<x)传统方案解决OA系统审批设...原创 2020-05-12 11:55:49 · 314 阅读 · 2 评论 -
设计模式(22)——策略模式
目录鸭子项目传统方案解决鸭子问题策略模式策略模式解决鸭子问题策略模式在JDK-Arrays应用的源码分析策略模式的注意事项和细节鸭子项目有各种鸭子(比如 野鸭、北京鸭、水鸭等,鸭子有各种行为,比如 叫、飞翔等)显示鸭子的信息传统方案解决鸭子问题传统的设计方案(类图)代码实现package com.atguigu.strategy;public abstract cla...原创 2020-05-12 11:53:39 · 222 阅读 · 1 评论 -
设计模式(21)——状态模式
目录APP抽奖活动问题状态模式状态模式解决APP抽奖问题状态模式在实际项目-借贷平台 源码剖析状态模式的注意事项和细节APP抽奖活动问题请编写程序完成APP抽奖活动 具体要求如下:假如每参加一次这个活动要扣除用户50积分,中奖概率是10%奖品数量固定,抽完就不能抽奖活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完活动的四个状态转换关系图(下图)状态模式基本介绍状态...原创 2020-05-12 11:52:12 · 263 阅读 · 2 评论 -
设计模式(20)——解释器模式
目录四则运算问题传统方法解决四则运算问题分析解释器模式解释器模式来实现四则解释器模式在Spring框架应用的源码剖析解释器模式的注意事项和细节四则运算问题通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求先输入表达式的形式,比如a+b+c-d+e,要求表达式的字母不能重复在分别输入a,b,c,d,e 的值最后求出结果:如图传统方法解决四则运算问题分析编写一个方法,接...原创 2020-05-12 11:50:35 · 599 阅读 · 1 评论 -
设计模式(19)——备忘录模式
目录游戏角色状态恢复问题传统方案解决游戏角色恢复备忘录模式备忘录模式解决游戏角色恢复状态实例备忘录模式的注意事项和细节游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战boss前保存自身的状态(攻击力和防御力),当大战boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态传统方案解决游戏角色恢复传统的设计方案(类图)传统的方式的问题分析一个对象,就对应一个保存对象状态...原创 2020-05-12 11:48:14 · 531 阅读 · 1 评论 -
设计模式(18)——中介者模式
目录智能家庭项目传统方案解决智能家庭管理问题中介者模式中介者模式应用实例-智能家庭管理中介者模式的注意事项和细节智能家庭项目智能家庭项目智能家庭包括各种设备、闹钟、咖啡机、电视机、窗帘 等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起 -> 咖啡机开始做咖啡 -> 窗帘自动落下 -> 电视机开始播放传统方案解决智能家庭管理...原创 2020-05-12 11:41:57 · 496 阅读 · 1 评论 -
设计模式(17)——观察者模式
目录天气预报项目需求天气预报设计方案-普通方案观察者模式观察者模式解决天气预报需求观察者模式在JDK应用的源码分析天气预报项目需求具体要求:气象站可以将每天测量到的温度、湿度、气压等等以公告的形式发布出去(比如发布到自己的网站或者第三方)需要设计开放型API,便于其他第三方也能接入气象站获取数据提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方天气预报设计方案-...原创 2020-05-12 11:40:46 · 441 阅读 · 0 评论 -
设计模式(16)——迭代器模式
目录看一个具体的需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图:...原创 2020-05-12 11:36:57 · 243 阅读 · 0 评论 -
设计模式(15)——访问者模式
目录访问者模式访问者模式应用实例访问者模式的注意事项和细节测评系统的需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同的种类,比如 成功、失败 等)传统方案传统方案的问题分析如果系统比较小,还是OK的,但是考虑系统增加越来越多的新的功能时,对代码改动较大,违反了ocp原则,不利于维护扩展性不好,比如 增加了 新的人员类型,或者...原创 2020-05-12 11:35:03 · 166 阅读 · 0 评论 -
设计模式(14)——命令模式
目录命令模式命令模式解决智能生活项目命令模式在Spring框架Jdbc Template应用的源码分析命令模式的注意事项和细节智能生活项目需求我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装APP就可以控制对这些家电工作。这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个APP,分别控制,我们希望只要一个APP就可以控制全部智能家电。要实现一个APP...原创 2020-05-12 11:33:59 · 214 阅读 · 0 评论 -
设计模式(13)——模板方法模式
目录模板方法模式模板方法模式解决豆浆制作问题模板方法模式的钩子方法模板方法模式在Spring框架应用的源码分析模板方法模式的注意事项和细节豆浆制作问题编写制作豆浆的程序,说明如下:1)制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎2)通过添加不同的配料,可以制作出不同口味的豆浆3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的4...原创 2020-05-12 11:32:36 · 480 阅读 · 0 评论 -
设计模式(12)——代理模式
目录代理模式静态代理动态代理Cglib代理代理模式的变体防火墙代理缓存代理远程代理同步代理代理模式基本介绍代理模式(Proxy Pattern):为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同...原创 2020-05-12 11:30:49 · 205 阅读 · 0 评论 -
设计模式(11)——享元模式
目录传统方案解决网站展现项目享元模式内部状态和外部状态享元模式解决网站展现项目享元模式在JDK-Integer的应用源码分析享元模式的注意事项和细节案例说明:展示网站项目需求小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:1)有客户要求以新闻的形式发布2)有客户要求以博客的形式发布3)有客户要求以微信公众号的形式...原创 2020-05-12 11:29:21 · 171 阅读 · 0 评论 -
设计模式(10)——外观模式
目录传统方式解决影院管理外观模式外观模式解决影院管理外观模式在MyBatis框架应用的源码分析外观模式的注意事项和细节案例说明:影院管理项目组建一个家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关开爆米花机放下屏幕开投影仪开音响开DVD,选DVD去拿爆米花调暗灯光播放观影结束后,关闭各...原创 2020-05-12 11:27:28 · 226 阅读 · 0 评论 -
设计模式(9)——组合模式
目录传统方案解决学校院系展示组合模式组合模式解决学校院系展示组合模式在JDK集合的源码分析组合模式的注意事项和细节案例说明:学校院系展示需求编写程序展示一个学校院系结构:需求是这样,在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图:传统方案解决学校院系展示类图存在的问题将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层...原创 2020-05-12 11:26:07 · 235 阅读 · 0 评论 -
设计模式(8)——装饰者模式
目录星巴克咖啡订单项目(咖啡馆):方案1解决星巴克咖啡订单项目方案2解决星巴克咖啡订单项目装饰者模式装饰者模式解决星巴克咖啡订单装饰者模式在JDK应用的源码分析星巴克咖啡订单项目(咖啡馆):咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、DeCaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种...原创 2020-05-12 11:25:01 · 219 阅读 · 0 评论 -
设计模式(7)——桥接模式
目录手机操作问题传统方案解决手机操作问题桥接模式桥接模式解决手机操作问题桥接模式在JDBC的源码剖析桥接模式的注意事项和细节桥接模式的其他应用场景手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机,关机,上网,打电话等),如图:传统方案解决手机操作问题类图问题分析扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加...原创 2020-05-12 11:23:27 · 282 阅读 · 0 评论 -
设计模式(6)——适配器模式
目录现实生活中的适配器例子适配器模式类适配器对象适配器接口适配器适配器模式在SpringMVC框架应用中的源码分析适配器模式的注意事项和细节现实生活中的适配器例子泰国插座(被适配的类)用的是欧标两孔的,可以买个多功能转换插头(适配器),这样就可以使用了。适配器模式基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让...原创 2020-05-12 11:22:17 · 275 阅读 · 0 评论 -
设计模式(5)——建造者模式
目录建造者模式的注意事项和细节客户端(使用程序)不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象可以更加精细地控制产品的创建过程。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加...原创 2020-05-12 11:10:28 · 300 阅读 · 0 评论 -
设计模式(4)——原型模式
目录传统方法解决克隆羊问题原型模式原型模式解决克隆羊问题原型模式在Spring框架中源码分析浅拷贝与深拷贝浅拷贝深拷贝原型模式的注意事项和细节案例说明:克隆羊问题现在有一只羊tom,姓名为:tom,年龄为:1,颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊。传统方法解决克隆羊问题思路分析代码演示package com.atguigu.prototype;...原创 2020-05-12 11:07:59 · 503 阅读 · 0 评论 -
设计模式(2)(3)——工厂方法模式 / 抽象工厂模式
目录传统方式简单工厂模式工厂方法模式抽象工厂模式工厂模式在JDK-Calendar应用的源码分析工厂模式小结工厂模式的意义三种工厂模式设计模式的依赖抽象原则案例说明看一个披萨的项目:要便于披萨种类的扩展,要便于维护披萨的种类很多(比如 GreekPizza、CheesePizza 等)披萨的制作有prepare,bake,cut,box完成披萨店订购功能传统方式思路分析...原创 2020-05-12 11:06:34 · 234 阅读 · 0 评论 -
设计模式(1)——单例模式
目录单例模式介绍单例模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举单例模式介绍所谓类的单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只能提供一个取得其对象实例的方法(静态方法)。比如 Hibernate 的 SessionFactory,它充当数...原创 2020-05-12 11:03:25 · 203 阅读 · 0 评论 -
设计模式——概述
掌握设计模式的层次第1层:刚开始学编程不久,听说过什么是设计模式第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道第3层:学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式挺好用的第4层:阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好处。第5层:代码写着写着,自己都没有意识到使用了设计模式,并且熟...原创 2020-05-12 10:57:01 · 462 阅读 · 0 评论 -
设计模式——类之间的关系
目录类图、类与类之间关系依赖关系 (Dependence)类图、类与类之间关系依赖关系 (Dependence)只要是在类中用到了对方,那么他们就存在依赖关系。小结类中用到了对方如果是类的成员属性如果是方法的返回类型是方法接收的参数类型方法中使用到...原创 2020-05-12 10:56:27 · 539 阅读 · 0 评论 -
设计模式——七大原则
目录设计模式七大原则单一职责原则 (Single Responsibility Principle)接口隔离原则 (Interface Segregation Principle)依赖倒转原则 (Dependence Inversion Principle)里氏替换原则 (Liskov Substitution Principle)开闭原则 (Open Closed Principle)迪米特法则...原创 2020-05-12 10:55:35 · 248 阅读 · 0 评论 -
设计模式——知识目录
目录设计模式七大原则单一职责原则 (Single Responsibility Principle)接口隔离原则 (Interface Segregation Principle)依赖倒转原则 (Dependence Inversion Principle)里氏替换原则 (Liskov Substitution Principle)设计模式七大原则单一职责原则 (Single Responsi...原创 2020-05-12 10:53:07 · 261 阅读 · 0 评论