展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

随笔分类 -  算法与设计 / 设计模式

摘要:案例说明 要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 设计类图 代码实现 package com.atguigu.iterator; public class Department { private String name; private String desc; 阅读全文
posted @ 2022-09-01 07:48 DogLeftover 阅读(14) 评论(0) 推荐(0) 编辑
摘要:学校院系结构展示问题 要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 传统方式解决 计算机学院 系=> 数组中 信息工程学院 系=> 集合 传统方式利弊 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个 阅读全文
posted @ 2022-09-01 07:42 DogLeftover 阅读(24) 评论(0) 推荐(0) 编辑
摘要:简介 所谓双分派是指不管类怎么变化,我们都能找到期望的方法运行。双分派意味着得到执行的操作取决于请求的种类和两个接收者的类型 实现方案 假设我们要添加一个Wait的状态类,考察Man类和Woman类的反应,由于使用了双分派,只需增加一个Action子类即可在客户端调用即可,不需要改动任何其他类的代码 阅读全文
posted @ 2022-08-31 23:00 DogLeftover 阅读(47) 评论(0) 推荐(0) 编辑
摘要:解决方案 将人分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等),请使用访问者模式来说实现 代码实现 package com.atguigu.visitor; public abstract class Person { // 阅读全文
posted @ 2022-08-31 22:57 DogLeftover 阅读(14) 评论(0) 推荐(0) 编辑
摘要:将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等) 传统解决方案 传统方案利弊 1) 如果系统比较小,还是ok的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp原则, 不利于维护 2) 扩展性不好,比如 阅读全文
posted @ 2022-08-31 22:51 DogLeftover 阅读(15) 评论(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 阅读(172) 评论(0) 推荐(0) 编辑
摘要:实现方式 代码实现 package com.atguigu.command; //创建命令接口 public interface Command { //执行动作(操作) public void execute(); //撤销动作(操作) public void undo(); } package 阅读全文
posted @ 2022-08-31 21:11 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:问题描述 1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。 3) 要实现一个app控制所有智能家电的需要, 阅读全文
posted @ 2022-08-31 21:04 DogLeftover 阅读(27) 评论(0) 推荐(0) 编辑
摘要:Spring IOC容器初始化时运用到的模板方法模式 public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable { //声明了一个模板方法 void refresh 阅读全文
posted @ 2022-08-31 17:37 DogLeftover 阅读(45) 评论(0) 推荐(0) 编辑
摘要:案例需求 制作豆浆的流程 选材 >添加配料 >浸泡 >放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的(红豆、花生豆浆。。。) 代码实现 package com.atguigu.template; //抽象类,表示豆浆 阅读全文
posted @ 2022-08-31 17:34 DogLeftover 阅读(27) 评论(0) 推荐(0) 编辑
摘要:编写制作豆浆的程序 1) 制作豆浆的流程 选材 >添加配料 >浸泡 >放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就想到这个 阅读全文
posted @ 2022-08-31 17:29 DogLeftover 阅读(32) 评论(0) 推荐(0) 编辑
摘要:简介 1) 静态代理和JDK代理模式都要求目标对象是实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是Cglib代理 2) Cglib代理也叫作子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能扩展, 有些书也将Cglib 阅读全文
posted @ 2022-08-31 16:47 DogLeftover 阅读(94) 评论(0) 推荐(0) 编辑
摘要:简介 1) 代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理 2) 代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象 3) 动态代理也叫做:JDK代理、接口代理 JDK中生成代理对象的API 1) 代理类所在包:java.lang.reflect.Proxy 2) 阅读全文
posted @ 2022-08-31 16:41 DogLeftover 阅读(52) 评论(0) 推荐(0) 编辑
摘要:简介 1) 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2) 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 3) 代理模式有不同的形式, 主要有三种 阅读全文
posted @ 2022-08-31 15:56 DogLeftover 阅读(37) 评论(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 阅读(24) 评论(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 阅读(13) 评论(0) 推荐(0) 编辑
摘要:小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 1) 有客户要求以新闻的形式发布 2) 有客户人要求以博客的形式发布 3) 有客户希望以微信公众号的形式发布 传统方案解决网站展现问题 1) 直接复制粘贴一份,然后根据客户不同要求 阅读全文
posted @ 2022-08-31 15:49 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:MyBatis 中的Configuration 去创建MetaObject 对象使用到外观模式 public class Configuration { protected ReflectorFactory reflectorFactory = new DefaultReflectorFactory 阅读全文
posted @ 2022-08-31 14:50 DogLeftover 阅读(36) 评论(0) 推荐(0) 编辑
摘要:1) 外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。 比如:在pc上安装软件的时候经常有一键安装选项(省去选择安装目录、安装的组件等等),还有就是手机的重启功能(把关机和启动合为一个操作) 2) 外观模式就是解决多个复杂接口带来的使用困难,起到简化用户操作的作 阅读全文
posted @ 2022-08-31 14:48 DogLeftover 阅读(15) 评论(0) 推荐(0) 编辑
摘要:组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 • 观影结束后,关闭各种设备 传 阅读全文
posted @ 2022-08-31 14:42 DogLeftover 阅读(30) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示