展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 35 下一页
摘要: APP抽奖问题 1) 假如每参加一次这个活动要扣除用户50积分,中奖概率是10% 2) 奖品数量固定,抽完就不能抽奖 3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 4) 活动的四个状态转换关系图 状态模式简介 1) 状态模式(State Pattern):它主要用来解决对象在多种状 阅读全文
posted @ 2022-09-01 15:37 DogLeftover 阅读(19) 评论(0) 推荐(0)
摘要: Spring框架中SpelExpressionParser使用到了解释器模式 public class Interpreter { public static void main(String[] args) { SpelExpressionParser parser = new SpelExpre 阅读全文
posted @ 2022-09-01 14:05 DogLeftover 阅读(89) 评论(0) 推荐(0)
摘要: 案例类图 代码实现 package com.atguigu.interpreter; import java.util.HashMap; /** * 抽象类表达式,通过HashMap 键值对, 可以获取到变量的值 */ public abstract class Expression { // a 阅读全文
posted @ 2022-09-01 14:04 DogLeftover 阅读(66) 评论(0) 推荐(0)
摘要: 通过解释器模式来实现四则运算,如计算a+b-c的值 1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 2) 在分别输入a ,b, c, d, e 的值 3) 最后求出结果 传统方案解决四则运算问题 1) 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得 阅读全文
posted @ 2022-09-01 13:46 DogLeftover 阅读(25) 评论(0) 推荐(0)
摘要: 问题需求 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 代码实现 package com.atguigu.memento.game; public class Memento { //攻击力 priva 阅读全文
posted @ 2022-09-01 13:27 DogLeftover 阅读(44) 评论(0) 推荐(0)
摘要: 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 传统解决方案:1个游侠角色对应1个状态 方案分析 1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管 阅读全文
posted @ 2022-09-01 11:36 DogLeftover 阅读(31) 评论(0) 推荐(0)
摘要: 方案类图 代码实现 package com.atguigu.mediator.smarthouse; //同事抽象类 public abstract class Colleague { private Mediator mediator; public String name; public Col 阅读全文
posted @ 2022-09-01 11:32 DogLeftover 阅读(24) 评论(0) 推荐(0)
摘要: 智能家电问题 1) 智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 2) 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放 传统解决方案 闹钟通知TV和咖啡机 咖啡机通知电视机和窗帘 各种设备相互通知 传 阅读全文
posted @ 2022-09-01 11:08 DogLeftover 阅读(20) 评论(0) 推荐(0)
摘要: 查看 @Deprecated(since="9") public class Observable { private boolean changed = false; private Vector<Observer> obs; // 集合 # 查看接口 @Deprecated(since="9") 阅读全文
posted @ 2022-09-01 10:22 DogLeftover 阅读(22) 评论(0) 推荐(0)
摘要: 简介 观察者模式类似订牛奶业务 1) 奶站/气象局:Subject 2) 用户/第三方网站:Observer Subject:登记注册、移除和通知 1) registerObserver 注册 2) removeObserver 移除 3) notifyObservers() 通知所有的注册的用户, 阅读全文
posted @ 2022-09-01 10:20 DogLeftover 阅读(26) 评论(0) 推荐(0)
摘要: 天气预报问题 1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 3) 提供温度、气压和湿度的接口 4) 测量数据更新时,要能实时的通知给第三方 传统方案 0) 设计出一个Wea 阅读全文
posted @ 2022-09-01 10:03 DogLeftover 阅读(56) 评论(0) 推荐(0)
摘要: JDK的ArrayList 集合中就使用了迭代器模式 public class IteratorPattern { @SuppressWarnings("rawtypes") public static void main(String[] args) { // TODO Auto-generate 阅读全文
posted @ 2022-09-01 07:55 DogLeftover 阅读(24) 评论(0) 推荐(0)
摘要: 案例说明 要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 设计类图 代码实现 package com.atguigu.iterator; public class Department { private String name; private String desc; 阅读全文
posted @ 2022-09-01 07:48 DogLeftover 阅读(21) 评论(0) 推荐(0)
摘要: 学校院系结构展示问题 要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 传统方式解决 计算机学院 系=> 数组中 信息工程学院 系=> 集合 传统方式利弊 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个 阅读全文
posted @ 2022-09-01 07:42 DogLeftover 阅读(27) 评论(0) 推荐(0)
摘要: 简介 所谓双分派是指不管类怎么变化,我们都能找到期望的方法运行。双分派意味着得到执行的操作取决于请求的种类和两个接收者的类型 实现方案 假设我们要添加一个Wait的状态类,考察Man类和Woman类的反应,由于使用了双分派,只需增加一个Action子类即可在客户端调用即可,不需要改动任何其他类的代码 阅读全文
posted @ 2022-08-31 23:00 DogLeftover 阅读(60) 评论(0) 推荐(0)
摘要: 解决方案 将人分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等),请使用访问者模式来说实现 代码实现 package com.atguigu.visitor; public abstract class Person { // 阅读全文
posted @ 2022-08-31 22:57 DogLeftover 阅读(24) 评论(0) 推荐(0)
摘要: 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 传统解决方案 传统方案利弊 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp原则, 不利于维护 2) 扩展性不好,比如 阅读全文
posted @ 2022-08-31 22:51 DogLeftover 阅读(21) 评论(0) 推荐(0)
摘要: Spring框架的JdbcTemplate就使用到了命令模式 public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { public <T> List<T> query(String sql, RowMapp 阅读全文
posted @ 2022-08-31 21:16 DogLeftover 阅读(196) 评论(0) 推荐(0)
摘要: 实现方式 代码实现 package com.atguigu.command; //创建命令接口 public interface Command { //执行动作(操作) public void execute(); //撤销动作(操作) public void undo(); } package 阅读全文
posted @ 2022-08-31 21:11 DogLeftover 阅读(22) 评论(0) 推荐(0)
摘要: 问题描述 1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家电的需要, 阅读全文
posted @ 2022-08-31 21:04 DogLeftover 阅读(31) 评论(0) 推荐(0)
摘要: Spring IOC容器初始化时运用到的模板方法模式 public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable { //声明了一个模板方法 void refresh 阅读全文
posted @ 2022-08-31 17:37 DogLeftover 阅读(57) 评论(0) 推荐(0)
摘要: 案例需求 制作豆浆的流程 选材 >添加配料 >浸泡 >放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的(红豆、花生豆浆。。。) 代码实现 package com.atguigu.template; //抽象类,表示豆浆 阅读全文
posted @ 2022-08-31 17:34 DogLeftover 阅读(35) 评论(0) 推荐(0)
摘要: 编写制作豆浆的程序 1) 制作豆浆的流程 选材 >添加配料 >浸泡 >放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就想到这个 阅读全文
posted @ 2022-08-31 17:29 DogLeftover 阅读(45) 评论(0) 推荐(0)
摘要: 简介 1) 静态代理和JDK代理模式都要求目标对象是实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是Cglib代理 2) Cglib代理也叫作子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能扩展, 有些书也将Cglib 阅读全文
posted @ 2022-08-31 16:47 DogLeftover 阅读(103) 评论(0) 推荐(0)
摘要: 简介 1) 代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理 2) 代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象 3) 动态代理也叫做:JDK代理、接口代理 JDK中生成代理对象的API 1) 代理类所在包:java.lang.reflect.Proxy 2) 阅读全文
posted @ 2022-08-31 16:41 DogLeftover 阅读(59) 评论(0) 推荐(0)
摘要: 简介 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有不同的形式, 主要有三种 阅读全文
posted @ 2022-08-31 15:56 DogLeftover 阅读(43) 评论(0) 推荐(0)
摘要: Integer中的享元模式 public class FlyWeight { public static void main(String[] args) { Integer x = Integer.valueOf(127); Integer y = new Integer(127); Intege 阅读全文
posted @ 2022-08-31 15:54 DogLeftover 阅读(30) 评论(0) 推荐(0)
摘要: 代码实现 package com.atguigu.flyweight; public abstract class WebSite { public abstract void use(User user);//抽象方法 } package com.atguigu.flyweight; //具体网站 阅读全文
posted @ 2022-08-31 15:52 DogLeftover 阅读(18) 评论(0) 推荐(0)
摘要: 小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布 传统方案解决网站展现问题 1) 直接复制粘贴一份,然后根据客户不同要求 阅读全文
posted @ 2022-08-31 15:49 DogLeftover 阅读(22) 评论(0) 推荐(0)
摘要: MyBatis 中的Configuration 去创建MetaObject 对象使用到外观模式 public class Configuration { protected ReflectorFactory reflectorFactory = new DefaultReflectorFactory 阅读全文
posted @ 2022-08-31 14:50 DogLeftover 阅读(43) 评论(0) 推荐(0)
摘要: 1) 外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。 比如:在pc上安装软件的时候经常有一键安装选项(省去选择安装目录、安装的组件等等),还有就是手机的重启功能(把关机和启动合为一个操作) 2) 外观模式就是解决多个复杂接口带来的使用困难,起到简化用户操作的作 阅读全文
posted @ 2022-08-31 14:48 DogLeftover 阅读(22) 评论(0) 推荐(0)
摘要: 组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 • 观影结束后,关闭各种设备 传 阅读全文
posted @ 2022-08-31 14:42 DogLeftover 阅读(42) 评论(0) 推荐(0)
摘要: Java的集合类-HashMap就使用了组合模式 # 编写测试代码 public class HashMapComp { public static void main(String[] args) { // TODO Auto-generated method stub Map<Integer,S 阅读全文
posted @ 2022-08-31 13:51 DogLeftover 阅读(28) 评论(0) 推荐(0)
摘要: 问题 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 OrganizationComponent可以是接口、抽象类、具体的类 OrganizationComponent聚合到University OrganizationComponent聚合到 阅读全文
posted @ 2022-08-31 13:42 DogLeftover 阅读(28) 评论(0) 推荐(0)
摘要: 1个学校中有多个学院,1个学院中有多个系 传统方案解决学校院系展示问题 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作, 阅读全文
posted @ 2022-08-31 13:38 DogLeftover 阅读(22) 评论(0) 推荐(0)
摘要: Java的IO结构,FilterInputStream就是一个装饰者 1. InputStream 是抽象类, 类似我们前面讲的 Drink 2. FileInputStream 是InputStream子类,类似我们前面的 DeCaf, LongBlack 3. FilterInputStream 阅读全文
posted @ 2022-08-31 11:53 DogLeftover 阅读(32) 评论(0) 推荐(0)
摘要: 简介 1) 装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp) 2) 这里提到的动态的将新功能附加到对象和ocp原则 原理 1) 装饰者模式就像打包一个快递 主体:比如:陶瓷、衣服 (Component) // 被装饰者 包装:比如:报 阅读全文
posted @ 2022-08-31 11:32 DogLeftover 阅读(28) 评论(0) 推荐(0)
摘要: 星巴克咖啡订单项目 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 4) 使用OO 阅读全文
posted @ 2022-08-31 11:27 DogLeftover 阅读(129) 评论(0) 推荐(0)
摘要: Jdbc的 Driver 接口,如果从桥接模式来看,Driver 就是一个接口,下面可以有 MySQL 的 Driver,Oracle 的Driver,这些就可以当做实现接口类 桥接模式的注意事项和细节 1) 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这 阅读全文
posted @ 2022-08-31 11:01 DogLeftover 阅读(43) 评论(0) 推荐(0)
摘要: 手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等) 如果用代码实现,需要写很多重复的类 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 2) 违反了单一职责 阅读全文
posted @ 2022-08-31 11:00 DogLeftover 阅读(145) 评论(0) 推荐(0)
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 35 下一页