![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java设计模式
文章平均质量分 87
网课指路 https://www.bilibili.com/video/BV1G4411c7N4?
需要沉淀沉淀
念念不忘 必有回响
展开
-
Java设计模式--职责链模式
OA系统采购审批需求 学校OA系统的采购审批项目:需求是 1) 采购员采购教学器材 2) 如果金额 小于等于5000, 由教学主任审批 (0<=x<=5000) 3) 如果金额 小于等于10000, 由院长审批 (5000<x<=10000) 4) 如果金额 小于等于30000, 由副校长审批 (10000<x<=30000) 5) 如果金额 超过30000以上,有校长...原创 2022-04-24 17:22:02 · 86 阅读 · 0 评论 -
Java设计模式--策略模式
鸭子问题 编写鸭子项目,具体要求如下: 1) 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 2) 显示鸭子的信息传统方案解决鸭子问题的分析和代码实现代码:public abstract class Duck { public Duck() { } public abstract void display();//显示鸭子信息 public void q...原创 2022-04-24 17:14:37 · 113 阅读 · 0 评论 -
Java设计模式--状态模式
APP抽奖活动问题 请编写程序完成APP抽奖活动 具体要求如下: 1) 假如每参加一次这个活动要扣除用户50积分,中奖概率是10% 2) 奖品数量固定,抽完就不能抽奖 3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 4) 活动的四个状态转换关系图 状态模式基本介绍1) 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换2) 当...原创 2022-04-24 17:02:34 · 355 阅读 · 0 评论 -
Java设计模式--解释器模式
四则运算问题 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 2) 在分别输入a ,b, c, d, e 的值 3) 最后求出结果传统方案解决四则运算问题分析 1) 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果 2) 问题...原创 2022-04-24 16:43:55 · 137 阅读 · 0 评论 -
Java设计模式--备忘录模式
游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大 战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态传统方案解决游戏角色恢复 传统的设计方案(类图)传统的方式的问题分析 1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不 利于管理,开销也很大. 2) 传统的方式是简单地做备份,new出另外一个对象出来,再把需要备份的...原创 2022-04-24 15:56:07 · 418 阅读 · 0 评论 -
Java设计模式----中介者模式
智能家庭项目: 1) 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 2) 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流 程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放传统方案解决智能家庭管理问题 传统的设计方案(类图) 传统的方式的问题分析 1) 当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂 2) 各个...原创 2022-04-24 15:48:18 · 106 阅读 · 0 评论 -
Java设计模式--观察者模式
天气预报项目需求 天气预报项目需求,具体要求如下: 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如 发布到自己的网站或第三方)。 2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方天气预报设计方案1-普通方案 ...原创 2022-04-24 11:34:15 · 412 阅读 · 0 评论 -
Java设计模式--迭代器模式
看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。使用传统的设计方案传统的方式的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个 学院,一个学院有多个系, 因此这种方案,不能很好实现的遍历的操作 ...原创 2022-04-24 10:44:48 · 631 阅读 · 0 评论 -
Java设计模式--访问者模式
测评系统的需求 完成测评系统需求 1) 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)2) 传统方案传统方式的问题分析 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改 动较大,违反了ocp原则, 不利于维护 2) 扩展性不好,比如 增加了 新的人员...原创 2022-04-24 08:56:43 · 805 阅读 · 0 评论 -
Java设计模式--命令模式
智能生活项目需求 看一个具体的需求 1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口给app调用,这时...原创 2022-04-23 21:21:59 · 310 阅读 · 0 评论 -
Java设计模式--模板方法模式
豆浆制作问题 编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就...原创 2022-04-23 21:08:52 · 647 阅读 · 0 评论 -
Java设计模式--代理模式
代理模式的基本介绍 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理 对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的 功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代 理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于...原创 2022-04-23 18:37:58 · 96 阅读 · 0 评论 -
Java设计模式--享元模式
展示网站项目需求 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希 望做这样的产品展示网站,但是要求都有些不同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布传统方案解决网站展现项目 1) 直接复制粘贴一份,然后根据客户不同要求,进行定制修改 2) 给每个网站租用一个空间 传...原创 2022-04-23 15:38:11 · 99 阅读 · 0 评论 -
Java设计模式--建造者模式
盖房项目需求 1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是 要求不要相同的.传统方式解决盖房需求 代码:public abstract class AbstractHouse { //打地基 public abstract void buildBasic(); //砌墙 public abstract void buildWalls(); //封顶 p...原创 2022-04-18 20:33:48 · 109 阅读 · 0 评论 -
Java设计模式--装饰者模式
星巴克咖啡订单项目 星巴克咖啡订单项目(咖啡馆): 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式 咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 4) 使用OO的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖 啡+调...原创 2022-04-19 21:53:37 · 97 阅读 · 0 评论 -
Java设计模式--原型模式
克隆羊问题 现在有一只羊tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和tom 羊 属性完全相同的10只羊。传统方法:public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { super(); ...原创 2022-04-18 20:03:15 · 102 阅读 · 0 评论 -
Java设计模式--桥接模式
手机操作问题 现在对不同手机类型的 不同品牌实现操作编程(比如: 开机、关机、上网,打电话等), 如图:传统方案解决手机使用问题(类图):传统方案解决手机操作问题分析 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品 牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 2) 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这 样增加了代码维护成本. ...原创 2022-04-19 20:33:41 · 488 阅读 · 0 评论 -
Java设计模式--单例模式
单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到...原创 2022-04-17 21:49:53 · 337 阅读 · 0 评论 -
Java设计模式---设计模式概述及七大原则
网课指路:尚硅谷Java设计模式(图解+框架源码剖析)_哔哩哔哩_bilibili设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的 1) 代码重用性 (即:相同功能的代码,不用多次编写)2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解)3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)...原创 2022-04-16 19:40:25 · 283 阅读 · 0 评论 -
Java设计模式--工厂设计模式
看一个具体的需求 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 1) 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 2) 披萨的制作有 prepare,bake, cut, box 3) 完成披萨店订购功能。传统的实现方式代码:public abstract class pizza { private String name;...原创 2022-04-18 10:42:50 · 162 阅读 · 0 评论 -
Java设计模式--适配器模式
适配器模式基本介绍 基本介绍 1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表 示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同 工作。其别名为包装器(Wrapper) 2) 适配器模式属于结构型模式 3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式...原创 2022-04-18 21:41:30 · 224 阅读 · 0 评论 -
Java设计模式--组合模式
学校院系展示需求 看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。如图传统方案解决学校院系展示(类图)传统方案解决学校院系展示存在的问题分析 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多...原创 2022-04-19 22:06:24 · 700 阅读 · 0 评论 -
Java设计模式--外观模式
影院管理项目 组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的 功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 ...原创 2022-04-23 13:50:51 · 170 阅读 · 0 评论