摘要: 第26章:职责链模式 一、学校 OA 系统的采购审批项目:需求是 采购员采购教学器材 如果金额 小于等于 5000, 由教学主任审批 (0 var = getValue(expStr);// var {a=10, b=20} Calculator calculator = new Calculato 阅读全文
posted @ 2020-01-10 22:38 默月 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 第25章:策略模式 一、编写鸭子项目,具体要求如下: 有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 显示鸭子的信息 二、传统方案解决鸭子问题的分析和代码实现 传统的设计方案(类图) 代码实现 看老师演示 Duck 抽象类 具体的 Duck 类 使用 三、传统的方式实现 阅读全文
posted @ 2020-01-10 22:36 默月 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 第24章:状态模式 一、APP 抽奖活动问题 请编写程序完成 APP 抽奖活动 具体要求如下: 假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10% 奖品数量固定,抽完就不能抽奖 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 活动的四个状态转换关系图(右图) 二、状态模式基本 阅读全文
posted @ 2020-01-10 22:35 默月 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 第23章:解释器模式 一、四则运算问题 通过解释器模式来实现四则运算,如计算 a+b c 的值,具体要求 先输入表达式的形式,比如 a+b+c d+e, 要求表达式的字母不能重复 在分别输入 a ,b, c, d, e 的值 最后求出结果:如图 二、传统方案解决四则运算问题分析 编写一个 方法 ,接 阅读全文
posted @ 2020-01-10 22:33 默月 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 第22章:备忘录模式 一、游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 二、传统方案解决游戏角色恢复 三、传统的方式的问题分析 一个对象,就对应一个保存对象状态的对象, 这样 阅读全文
posted @ 2020-01-10 22:23 默月 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 第21章:中介者模式 一、智能家庭项目 智能家庭项目: 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起 咖啡机开始做咖啡 窗帘自动落下 电视机开始播放 二、传统方案解决智能家庭管理问题 三、传统的方式的问题分 阅读全文
posted @ 2020-01-10 22:21 默月 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 第20章:观察者模式 一、天气预报项目需求,具体要求如下: 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 提供温度、气压和湿度的接口 测量数据更新时,要能实时的通知给第三方 二、天气预 阅读全文
posted @ 2020-01-10 22:19 默月 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 第19章:迭代器模式 一、看一个具体的需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 传统的设计方案(类图) ​ 学校 ​ 学院 系 三、传统的方式的问题分析 将学院看做是学校的子类,系是学院的子类,这样实际上是站在 阅读全文
posted @ 2020-01-10 22:17 默月 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 第18章:访问者模式 一、测评系统的需求 完成测评系统需求 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 传统方案 二、传统方式的问题分析 如果系统比较小,还是 ok 的,但是考虑系统增加越来越多新的功能时,对代码 阅读全文
posted @ 2020-01-10 22:15 默月 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 第17章:命令模式 一、智能生活项目需求 ​ 看一个具体的需求 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作。 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制,我们希望只要一个 app 就可以控制全部智能家 阅读全文
posted @ 2020-01-10 22:14 默月 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 第16章:模板方法模式 一、豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程 选材 添加配料 浸泡 放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用 模板方法模式 完成 (说明:因为模板方法模式,比 阅读全文
posted @ 2020-01-10 22:12 默月 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 第15章:代理模式 一、代理模式(Proxy) (一)代理模式的基本介绍 代理模式: 为一个对象提供一个替身,以控制对这个对象(被代理的对象)的访问 。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建 阅读全文
posted @ 2020-01-10 22:11 默月 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 第14章:享元模式 一、展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布 二、传统方案解决网站展现项目 直接复制 阅读全文
posted @ 2020-01-10 22:09 默月 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 第13章:外观模式 13.1 影院管理项目 组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开 DVD,选 dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各 阅读全文
posted @ 2020-01-10 22:07 默月 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 第12章:组合模式 一、看一个学校院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 清华大学 计算机学院 计算机科学与技术 软件工程 网络工程 信息工程学院 通信工程 信息工程 二、传统方案解决学校院系展示(类 阅读全文
posted @ 2020-01-10 22:05 默月 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 第11章:装饰者设计模式 一、星巴克咖啡订单项目(咖啡馆): 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 调料:Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、 阅读全文
posted @ 2020-01-10 22:03 默月 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 第10章:桥接模式 一、手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: ​ 传统方案解决手机操作问题 传统方法对应的类图 三、传统方案解决手机操作问题分析 扩展性问题( 类爆炸 ),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同 阅读全文
posted @ 2020-01-10 22:00 默月 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 第9章:适配器模式 现实生活中的适配器例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了。 二、基本介绍 适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表示 , 主的目的是兼容性 ,让原本因接口不匹配不能一起工作的两个 阅读全文
posted @ 2020-01-10 21:57 默月 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 第8章:建造者模式 一、盖房项目需求 需要建房子:这一过程为打桩、砌墙、封顶 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 请编写程序,完成需求. 传统方式解决盖房需求 思路分析(图解) 看老师代码的演示 这里以 commonHouse 为例,实现上面的接口 阅读全文
posted @ 2020-01-10 21:55 默月 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 第7章:原型模式 克隆羊问题 现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10 只羊。 二、传统方式解决克隆羊问题 思路分析(图解) 看老师代码的演示 首先是 Sheep 实体类 然后创建同属性的 Sheep: 三、传统的方式的优 阅读全文
posted @ 2020-01-10 21:53 默月 阅读(214) 评论(0) 推荐(0) 编辑