随笔分类 - 设计模式
数据结构 玩转数据结构 12-4 旋转操作的基本原理
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=14349 1 重点关注 1.1 二分搜索树的性质 代码草图 1.2 破坏二分搜索树的四种情况 1.3 左左情况解析 1.4 左左情况解决:右旋转(图中应该是右旋转) 2 课程内容 3 Codin
阅读全文
数据结构 玩转数据结构 12-2 AVL树计算高度及平衡因子
摘要:0 课程地址 https://coding.imooc.com/lesson/207.html#mid=14347 1 重点关注 1.1 代码草图 1.2 代码实现计算高度及平衡因子及测试 3.1getHeight和getBalancFactory的应用 2 课程内容 3 Coding 3.1 co
阅读全文
设计模式课程 设计模式精讲 27-3 状态模式源码解析
摘要:1 源码解析 1.1 源码解析1(jsf订单状态的扭转) 1 源码解析 1.1 源码解析1(jsf订单状态的扭转) 功能: 1 LifeCycle 通过从外部控制实例的状态来改变其行为。 添加依赖: <dependency> <groupId>com.sun.faces</groupId> <art
阅读全文
设计模式课程 设计模式精讲 27-2 状态模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 课程视频有播放,快进,暂停,停止(关闭)四种状态,状态之间可以相互切换,但是停止状态不能切换到快进 和暂停状态 重点:(个人开发中没有注意到的地方) 1 核心:上下文类:this.courseVideoState.setCo
阅读全文
设计模式课程 设计模式精讲 26-3 访问者模式源码解析
摘要:1 源码解析 1.1 源码解析1(jdk文件访问者的应用) 1.2 源码解析2(Spring中bean访问者的应用) 1 源码解析 1.1 源码解析1(jdk文件访问者的应用) 功能: 1 通过FileVisitor遍历文件数比较方便,比如文件夹内查找符合条件的文件,或者 按时间查找某一天创建的文件
阅读全文
设计模式课程 设计模式精讲 26-2 访问者模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 木木网发布课程,有 付费课程 和免费课程。要设计出不同的游客访问不同课程看到的权限不同((其实领导不应该在visitor中,这里为了方便讲解)领导可以看到课程绩效,课程名字和课程价格,其他游客可以看到付费课程名字和价格以及免
阅读全文
设计模式课程 设计模式精讲 25-3 责任链模式源码解析
摘要:1 源码解析 1.1 源码解析1(Servlet过滤器的应用) 1 源码解析 1.1 源码解析1(Servlet过滤器的应用) 重点讲解: 1 filterchain中有很多的filter,filter按照一定的顺序组装成一个链条,可以理解成责任链模式。 2 每次filter 执行dofilter方
阅读全文
设计模式课程 设计模式精讲 25-2 责任链模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 木木网发布课程,需要审批员审批,看课程视频是否上传,课程手记是否上传,课程名字是否上传(这是我加的),请完成这个审批过程。 重点:(个人开发中没有注意到的地方) 1 抽象类Approver的setApprover方法是重点,
阅读全文
设计模式课程 设计模式精讲 27-1 状态模式讲解
摘要:1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 状态模式相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆允许一个对象在其内部状态改变时,改变它的行为 对象状态改变,其行为也需要改变或者不改变。 解决的问题是,当控制一个
阅读全文
设计模式课程 设计模式精讲 26-1 访问者模式讲解
摘要:1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 访问者模式相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆封装作用于某数据结构(如List/Set/Map等)中的各元素的操作◆可以在不改变各元素的类的前提下,定义作用于
阅读全文
设计模式课程 设计模式精讲 24-3 中介者模式源码解析
摘要:1 源码解析 1.1 源码解析1(JDK 定时任务调用类的应用) 1 源码解析 1.1 源码解析1(JDK定时任务调用类的应用) a schedule的方法重载,最后调的sche方法,可以理解成timer中的sched的方法通过taskque来协调各种timerTask定时任务。理解成timer是中
阅读全文
设计模式课程 设计模式精讲 24-2 中介者模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 李大X的牛回头 课程qq讨论群,每个人发出信息后,其他人都可看见 注意:(个人开发中没有注意到的地方) a 关于message的处理(如敏感信息的校验等),都可以放到中介者中,不需要封装的user中。 b 聊天室和qq群这种
阅读全文
设计模式课程 设计模式精讲 25-1 责任链模式讲解
摘要:1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 责任链相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆为请求创建一个接收此次请求对象的链 链条中每个元素就是一个对象 1.3 适用场景: 一个请求的处理需要多个对象当中的
阅读全文
设计模式课程 设计模式精讲 23-3 命令模式源码解析
摘要:1 源码解析 1.1 源码解析1(JDK 线程的应用) 1.2 源码解析2(Junit中的应用) 1 源码解析 1.1 源码解析1(JDK线程的应用) a 可以理解为Runnable为抽象的命令,如果实现类实现了Runnable,实现可以理解为具体执行定的命令 Runnable package ja
阅读全文
设计模式课程 设计模式精讲 23-2 命令模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 木木网付费课程,第一节课可以不付费观看或者付费观看,通过命令模式实现 注意:(个人开发中没有注意到的地方) a 接口无法添加属性(添加属性的接口编译器默认赋值成静态的,已经不属于本类属性范畴了),属性通过它的实现类来添加,参
阅读全文
设计模式课程 设计模式精讲 22-3 备忘录模式源码解析
摘要:1 源码解析 1.1 源码解析1(Spring工作流的应用) 1 源码解析 1.1 源码解析1(Spring工作流的应用) a 工作流可以点击回退到上一步 StateManageableMessageContext // // Source code recreated from a .class
阅读全文
设计模式课程 设计模式精讲 24-1 中介者模式讲解
摘要:1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 中介者相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆定义一个封装一组对象如何交互的对象◆通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互 1.3 适用
阅读全文
设计模式课程 设计模式精讲 23-1 命令模式讲解
摘要:1 课程讲解 1.1 类型: 1.2 定义: 1.3 适用场景: 1.4 优点: 1.5 缺点: 1.6 命令相关的设计模式 1 课程讲解 1.1 类型: 行为型 1.2 定义: ◆定义:将“请求”封装成对象,以便使用不同的请求 扩展:◆命令模式解决了应用程序中对象的职责以及它们之间的通信方式 详解
阅读全文
设计模式课程 设计模式精讲 22-2 备忘录模式coding
摘要:1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 网站笔记需要存储快照,能实现回退的功能。 注意: a 设计的时候,可以分为笔记类,笔记快照类和 笔记快照管理类 三个类。 b 笔记快照管理 和 笔记快照是聚合关系,快照管理可以有0到多个笔记快照。 c 快照管理类用栈的方式存
阅读全文