HF 常用设计模式
文章平均质量分 94
设计模式学习
雫#1999
道阻且长
展开
-
常用设计模式&设计原则
文章目录1 设计模式1 策略模式2 观察者模式3 装饰者模式4 工厂模式5 单例模式6 命令模式7 适配器模式8 模板方法模式9 状态模式10 代理模式2 设计原则2.1 区分变与不变2.2 多用组合,少用继承2.3 松耦合2.4 开闭原则2.5 依赖倒置原则2.6 最少知识原则2.7 好莱坞原则2.8 单一职责原则1 设计模式1 策略模式策略模式:为某个可以变化的功能,将其设计成一个接口为该接口扩展出一系列实现类,在生成该对象时再赋予该对象特有的特征让功能的实现与对象脱离,将对象和行为分原创 2021-08-09 18:16:01 · 134 阅读 · 0 评论 -
《HF 设计模式》 C11 代理模式
文章目录1 代理模式1.1 给糖果机加上监控1.2 远程代理(Remote Proxy)1.3 远程方法调用(RMI)1.4 远程代理1.5 定义代理模式1.6 虚拟代理1.7 保护代理1 代理模式1.1 给糖果机加上监控在C10的状态模式中,我们设计了一个能随着状态改变而改变行为的糖果机,现在收到了新的需求,要求为糖果机加上一个监控的功能,监测当前糖果机的状态:/** * @author 雫 * @date 2021/3/11 - 12:27 * @function 糖果机 */p原创 2021-03-12 14:08:40 · 244 阅读 · 0 评论 -
《HF 设计模式》 C10 状态模式
文章目录1 模拟糖果机1.1 糖果机需求1.2 简单糖果状态机1.3 增加需求1.4 重新设计糖果机代码1.5 定义状态模式1.6 状态模式小结1 模拟糖果机策略模式是围绕可以互换的算法来创建业务,而状态模式是通过改变对象内部的状态来帮对象控制自己的行为1.1 糖果机需求现在需要用Java程序来控制糖果机的工作,需要设计一个良好的可维护有弹性的糖果机系统,糖果机的工作过程如下:上面的需求图是一张状态图,每个圆圈是一个状态,每个箭头是状态的转换,要从一个状态进入到另一个状态,必须发生一些“动原创 2021-03-10 18:41:59 · 317 阅读 · 0 评论 -
《HF 设计模式》 C9 迭代器模式&组合模式
文章目录原创 2021-03-10 14:27:57 · 125 阅读 · 0 评论 -
《HF 设计模式》 C8 模板方法模式
文章目录1 模板方法模式1.1 茶和咖啡的制作过程1.2 优化饮料的制作过程1.3 模板方法模式1.4 对模板方法进行挂钩(hook)1.5 好莱坞原则1.6 JavaAPI中的模板方法模式1.7 模板方法模式小结1 模板方法模式1.1 茶和咖啡的制作过程在学习模板方法模式前,先来看看茶和咖啡的制作过程:Tea:1,把水煮沸2,用沸水冲泡茶叶3,把茶倒进杯子里4,加柠檬Coffee:1,把水煮沸2,用沸水冲泡咖啡3,把咖啡倒进杯子里4,加糖和牛奶根据这些步骤,我们可以写原创 2021-03-08 15:32:19 · 122 阅读 · 0 评论 -
《HF 设计模式》 C7 适配器模式&外观模式
文章目录1 适配器模式1.1 认识适配器1.2 更换电视机1.3 适配器模式1.4 枚举器与迭代器1.5 适配器模式小结2 外观模式2.1 模拟家庭影院2.2 整合家庭影院系统2.3 外观模式2.4 “最少”知识原则2.5 适配器模式&外观模式小结1 适配器模式1.1 认识适配器如果你想给你的手机充电,但是附近只有一个三孔插座,为此你可能需要一个插线板这个插线板就是适配器,而OO适配器和真实世界的适配器扮演着同样的角色:将一个接口转换成另一个接口,以符合客户的期望我们来看看JDK中原创 2021-03-05 15:39:04 · 253 阅读 · 0 评论 -
《HF 设计模式》 C6 命令模式
文章目录1 模拟家电遥控器1.1 家电遥控器的需求1.2 粗糙的实现遥控器1.3 看看餐厅是如何工作的1.4 采用命令对象实现遥控器1.5 命令模式1.6 继续实现遥控器1.7 为遥控器添加撤销功能1.8 使用状态实现撤销1.9 宏命令1.10 命令模式的更多用途1.11 命令模式小结通过命令模式,可以把方法封装起来,因此调用此方法的对象就不需要关心方法是如何完成的,只需要知道如何使用包装成形的方法来完成它就可以1 模拟家电遥控器1.1 家电遥控器的需求给一个上述形状的遥控器,左边的插槽可以原创 2021-03-04 19:06:14 · 464 阅读 · 0 评论 -
《HF 设计模式》 C5 单例模式
文章目录1 管理公共资源的对象只需要一个1.1 有时只需要一个对象1.2 单例模式1.3 模拟巧克力锅炉1.4 当多线程参与进来...1.5 单例模式小结1 管理公共资源的对象只需要一个1.1 有时只需要一个对象每一个类都可以通过new来生成若干个对象,但是有些对象我们只需要一个,如:线程池,注册表,日志等对象,这些对象只能有一个,如果制造出多个对象,就会导致程序的行为异常,资源使用过量,导致不一样的结果等像某个普通的类,如Person,可以随便的生成Person对象,因为Person类的初衷原创 2021-03-04 13:35:54 · 119 阅读 · 0 评论 -
《HF 设计模式》 C4 工厂模式
文章目录1 模拟披萨店(上)1.1 new对象带来的问题1.2 增加更多的披萨1.3 简单工厂1.4 加盟披萨店1.5 工厂方法模式1.6 工厂方法模式总结2 模拟披萨店(下)2.1 对象间的依赖2.2 依赖倒置原则2.3 创建原料工厂2.4 抽象工厂模式2.5 工厂模式总结除了使用new操作符外还有更多制造对象的方法,实例化对象这个过程不应该总是公开地进行工厂模式分为 简单工厂,工厂方法模式,抽象工厂模式1 模拟披萨店(上)1.1 new对象带来的问题当使用new关键字时,我们创建了一个类原创 2021-03-03 19:03:17 · 294 阅读 · 0 评论 -
《HF 设计模式》 C3 装饰者模式
文章目录1 模拟咖啡厅菜单1.1 粗糙地使用继承1.2 细致一些地使用继承1.3 再谈继承和组合1.4 开放-关闭原则1.5 认识装饰者模式1.6 重新设计咖啡菜单1 模拟咖啡厅菜单现在我们去尝试模拟咖啡厅的菜单,比如顾客需要一杯拿铁,那我们就给他一杯拿铁,并计算出价格但是如果顾客需要加入一些调料,如摩卡,奶泡,蒸奶等,问题就变得复杂起来,调料有很多种,每种调料都有其价格,顾客可以选择1种或多种,这让我们获得一个加了调料的拿铁对象变得复杂起来,而且如果需要双倍的奶泡呢?如果还需要引入大中小杯呢?原创 2021-03-02 16:04:01 · 176 阅读 · 0 评论 -
《HF 设计模式》 C2 观察者模式
文章目录1 模拟气象站布告1.1 一个错误示范1.2 报社和订阅者1.3 定义观察者模式1.4 松耦合1.5 实现气象站布告系统1.6 观察者获取数据的方式1.7 Java内置的观察者模式1.8 设立changed标志1.91 模拟气象站布告在一个模拟气象站布告的应用中,我们将建立3个布告板,分别为:目前天气,气象统计和天气预报,气象站提供了一个WeatherData对象,它能够及时获取温度,湿度,气压等信息,我们根据WeatherData获取到的数据来更新这几个布告板但是布告板的更新是由用户原创 2021-03-01 19:45:27 · 257 阅读 · 0 评论 -
《HF 设计模式》 C1 策略模式
文章目录1 模拟鸭子系统1.1 粗糙的使用继承完成1.2 使用继承后的问题1.3 软件是不断变化的1.4 使用接口完成问题1.5 使用set方法替换行为1.6 多用组合,少用继承1.7 策略模式1.8 关于设计模式1 模拟鸭子系统在一个模拟鸭子游戏的应用中,存在若干种鸭子,有绿头鸭,红头鸭,橡皮鸭,木头鸭等,每一种鸭子都有其独特的行为,该如何设计这个系统,并保证以后有更多的鸭子加入时,系统具有良好的可扩展性和可维护性?1.1 粗糙的使用继承完成对于每一种鸭子,我们先思考它们的特点:重量高度原创 2021-03-01 14:49:11 · 260 阅读 · 0 评论