Fork me on GitHub

随笔分类 -  趣味设计模式系列

用精简的例子阐述设计模式,并仿造源码手写经典源码中的常用设计模式,有图、有漫画、有故事、有源码分析和总结,让技术不再枯燥乏味。
摘要:1. 简介 组合模式(Composite Pattern):将对象组合成树形结构以表示部分-整体的层次关系。 2. 示例 假设要设计一个文件系统的目录,需要灵活的在某个目录下添加、删除目录或文件,统计指定目录下的文件个数,计算指定目录下的文件大小。 设计类图如下: 抽象类Node package c 阅读全文 »
posted @ 2022-03-02 22:35 小猪爸爸 阅读(593) 评论(0) 推荐(0) 编辑
摘要:1. 简介 装饰器模式(Decorator Pattern):动态地给一个对象添加职责,就增加功能来说,装饰器比生成子类更灵活。 2. 示例 水果店需要给网上客户发货,除了包装之外,需要对特定水果包装加额外装饰,比如加防伪标志、加固、加急等额外功能,但在外部看来还是打包组件。 类图设计 水果包装接口 阅读全文 »
posted @ 2020-09-13 08:22 小猪爸爸 阅读(358) 评论(0) 推荐(0) 编辑
摘要:1. 简介 访问者模式(Visitor Pattern):表示一个作用在某对象结构中的元素的操作,它可以在不改变类的元素的前提下,定义作用于这些元素的新操作。这是《设计模式-可复用面向对象软件的基础》中的定义。换句通俗的话,就是类的结构元素不变,可以根据访问者重新定义元素的操作。 2. 示例 2.1 阅读全文 »
posted @ 2020-09-07 07:06 小猪爸爸 阅读(496) 评论(0) 推荐(0) 编辑
摘要:1. 简介 ASM是assemble英文的简称,中文名为汇编,官方地址https://asm.ow2.io/,下面是官方的一段英文简介: ASM is an all purpose Java bytecode manipulation and analysis framework. It can b 阅读全文 »
posted @ 2020-09-02 06:31 小猪爸爸 阅读(823) 评论(0) 推荐(0) 编辑
摘要:1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12。 2. Enhancer源码分析 public Object create() { // 判断是否需要创建对象,false表示需要创建对象 classOnly = false; / 阅读全文 »
posted @ 2020-08-24 21:47 小猪爸爸 阅读(597) 评论(0) 推荐(1) 编辑
摘要:1. 图解 上图主要描述了JDK动态代理的执行过程,下面做详细分析。 2. Proxy源码分析 上一篇,在使用JDK动态代理的时候,借助于Proxy类,使用newProxyInstance静态方法,创建了动态代理对象,这个方法接收三个参数,分别是目标类的类加载器、目标类实现的接口数组、自定义的Inv 阅读全文 »
posted @ 2020-08-13 09:12 小猪爸爸 阅读(515) 评论(0) 推荐(3) 编辑
摘要:1. 简介 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。简而言之,既能使被代理对象无入侵,又能附加代理自己的操作,使方法增强功能。 2. 图解 水果店代理销售海南芝麻蕉,此外还销售苹果、橘子等其他水果。 代理的主要实现技术与方法如下图所示,本篇主要讲静态代理 阅读全文 »
posted @ 2020-08-09 22:33 小猪爸爸 阅读(975) 评论(0) 推荐(2) 编辑
摘要:1. 简介 策略模式(strategy):定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 2. 图解 商城搞多种优惠活动,顾客只能参与其中一种优惠算法。 3. 案例实现 类图 满200减20元; 首次购买减20元; 第二件打9折; 节日一律减5元. 代码实现如下,环境类 折扣接口类 满 阅读全文 »
posted @ 2020-05-06 23:18 小猪爸爸 阅读(559) 评论(0) 推荐(0) 编辑
摘要:1. 简介 单例模式(Singleton):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 2. 图解 类图如下: 3. 案例实现 单例特点: 外部类不能随便对单例类创建,故单例的 ,在类的内部自行实例化; 提供一个 ,作为唯一调用单例类的途径得到实例。 3.1 饿汉式 执行结果 阅读全文 »
posted @ 2020-02-14 11:09 小猪爸爸 阅读(464) 评论(0) 推荐(2) 编辑
摘要:1. 简介 状态模式(State Pattern),当一个对象内在 时允许其 ,这个对象看起来像改变了其类。简而言之,就是 。 2. 图解 下图四辆汽车,分别代表汽车日常的四种状态。 开门状态: 关门状态: 飞奔状态: 停止状态: 其中,某种特定状态下,都有四个可执行操作,分别是open,close 阅读全文 »
posted @ 2020-01-05 00:13 小猪爸爸 阅读(529) 评论(2) 推荐(0) 编辑
摘要:1. 简介 观察者模式(Observer Pattern),也叫做发布订阅模式(Publish Subscribe),它定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 2. 图解 水果店进口水果销量良好,特别是进口蛇果,目前还没到货,有几个女 阅读全文 »
posted @ 2019-10-21 22:37 小猪爸爸 阅读(388) 评论(0) 推荐(0) 编辑
摘要:1. 简介 责任链模式(Chain of Responsibility):使 都有机会处理请求,从而避免了请求的 和`接受者 耦合`关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 2. 图解 商城新开张,每个订单,可以享受多张优惠券叠加减免 责任链模式 3. 案例实现 类 阅读全文 »
posted @ 2019-09-22 23:21 小猪爸爸 阅读(1362) 评论(0) 推荐(1) 编辑

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