摘要: 策略模式 基本介绍 1)策略模式(StrategyPattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 2)这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多 阅读全文
posted @ 2022-05-27 19:23 彼岸舞 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 学校OA系统的采购审批项目 采购员采购教学器材 1)如果金额小于等于5000,由教学主任审批(0<=x<=5000) 2)如果金额小于等于10000,由院长审批(5000<x<=10000) 3)如果金额小于等于30000,由副校长审批(10000<x<=30000) 4)如果金额超过30000以上 阅读全文
posted @ 2022-05-27 19:23 彼岸舞 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 四则运算问题 通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求 1)先输入表达式的形式,比如a+b+c-d+e,要求表达式的字母不能重复 2)在分别输入a,b,c,d,e的值 3)最后求出结果:如图 传统方案解决四则运算问题分析 1)编写一个方法,接收表达式的形式,然后根据用户输入的数值 阅读全文
posted @ 2022-05-27 19:20 彼岸舞 阅读(30) 评论(0) 推荐(0) 编辑
摘要: APP抽奖活动问题 请编写程序完成APP抽奖活动具体要求如下: 1)假如每参加一次这个活动要扣除用户50积分,中奖概率是10% 2)奖品数量固定,抽完就不能抽奖 3)活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完 4)活动的四个状态转换关系图(右图) 状态模式 基本介绍 1)状态模式(Sta 阅读全文
posted @ 2022-05-27 19:20 彼岸舞 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 传统解决方案 传统方案问题分析 1)一个对象,就对应一个保存对象状态的对象,这样当我们游戏的对象很多时,不利于管理,开销也很大. 2) 阅读全文
posted @ 2022-05-27 19:19 彼岸舞 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 智能家庭项目 智能家庭项目: 1)智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等 2)主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放 传统方案解决 传统方案问题分析 1)当各电器对象有多种状态改变时,相互 阅读全文
posted @ 2022-05-27 19:18 彼岸舞 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 天气预报项目需求 具体要求如下: 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 提供温度、气压和湿度的接口 测量数据更新时,要能实时的通知给第三方 天气预报设计方案1-普通方案 思路 阅读全文
posted @ 2022-05-27 19:17 彼岸舞 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图 传统解决方案 传统方案问题分析 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是:在一个页面中展示出学校的院系组成,一个学 阅读全文
posted @ 2022-05-27 19:17 彼岸舞 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 智能生活项目需求 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作。 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。 要实现一个app控制所有智能家电的需要,则每个智能 阅读全文
posted @ 2022-05-27 19:16 彼岸舞 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 测评系统的需求 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同的种类,比如成功、失败等) 传统方案解决 传统方案问题分析 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp原则,不利于维护 扩展性不好,比如 阅读全文
posted @ 2022-05-27 19:16 彼岸舞 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 代理模式有不同的形式,主要有三种静态代理、动态代理 阅读全文
posted @ 2022-05-27 19:15 彼岸舞 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程选材 >添加配料 >浸泡 >放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 请使用模板方法模式完成(说明:因为模板方法模式,比较简单,很容易就想到这个方案, 阅读全文
posted @ 2022-05-27 19:15 彼岸舞 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 展示网站项目需求 小型的外包项目, 给客户A做一个产品展示网站, 客户A的朋友感觉效果很不错, 也需要做这样的产品网站, 但是要求都有些不同 有客户要求以新闻的方式发布 有客户要求以博客的形式发布 有客户希望以微信公众号的形式发布 传统解决方案 直接复制粘贴一份, 然后根据客户不同的要求, 进行定制 阅读全文
posted @ 2022-05-27 19:12 彼岸舞 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 学院院系展示需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图: 传统方式解决方案 问题分析 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是:在一个页面中展示出学校的院系组 阅读全文
posted @ 2022-05-27 19:11 彼岸舞 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 影院管理项目 组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开DVD, 选dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各种设备 传统方式解决影院管理 传统 阅读全文
posted @ 2022-05-27 19:11 彼岸舞 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 星巴克咖啡订单项目(咖啡馆) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 调料:Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 使用OO的来计算不同种 阅读全文
posted @ 2022-05-27 19:10 彼岸舞 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 传统解决方案 类图 问题分析 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 违反了单一职责原则,当我 阅读全文
posted @ 2022-05-27 19:09 彼岸舞 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 需求 需要建造房子, 过程为: 打桩->砌墙->封顶 房子有各式各样的, 比如普通房, 高楼, 别墅, 过程虽然一样, 要是要求不要相同的 传统方式解决 新建抽象类 package com.dance.design.designmodel.buildmodel; import lombok.Buil 阅读全文
posted @ 2022-05-27 19:08 彼岸舞 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 生活例子 泰国插座用的是两孔的(欧标), 我们国内的是矩形的, 没办法使用, 这个时候就可以买一个电源转换器(适配器) 就可以了 适配器模式基本介绍 适配器模式将某个类的接口转化成客户端期望的另一个接口表示, 主要的目的是兼容性, 让原本因接口不匹配不能一起工作的两个类可以协同工作, 其别名为包装器 阅读全文
posted @ 2022-05-27 19:08 彼岸舞 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式 需求 看一个披萨的项目: 披萨的种类有很多(GePizz, CePizz等) 披萨的制作步骤有 prepare, bake, cut, box 完成披萨店的订购功能 需求点: 要便于披萨种类的扩展, 要便于维护 类图 传统方式实现 package com.dance.design.de 阅读全文
posted @ 2022-05-27 19:07 彼岸舞 阅读(30) 评论(0) 推荐(0) 编辑