浅谈模式 - 装饰者模式
对象包装对象,目的是功能增强。
最常见的JAVA IO
。
Dubbo
,Spring
中都有一些wapper
类。
// 出自Dubbo源码 ProtocolFilterWrapper,版本2.6.4
public class ProtocolFilterWrapper implements Protocol {private final Protocol protocol;// 被包装的protocol对象public ProtocolFilterWrapper(Protocol protocol) {if (protocol == null) {throw new IllegalArgumentException("protocol == null");}this.protocol = protocol;}private static <T> Invoker<T> buildInvokerChain(final Invoker<T> invoker, String key, String group) {// -----------------省略一些代码-------------------}@Overridepublic int getDefaultPort() {return protocol.getDefaultPort();}@Overridepublic <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {if (Constants.REGISTRY_PROTOCOL.equals(invoker.getUrl().getProtocol())) {return protocol.export(invoker);}return protocol.export(buildInvokerChain(invoker, Constants.SERVICE_FILTER_KEY, Constants.PROVIDER));}@Overridepublic <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {if (Constants.REGISTRY_PROTOCOL.equals(url.getProtocol())) {return protocol.refer(type, url);}return buildInvokerChain(protocol.refer(type, url), Constants.REFERENCE_FILTER_KEY, Constants.CONSUMER);}@Overridepublic void destroy() {protocol.destroy();}
}
上述代码在Dubbo
中的具体原理参考文章 dubbo的filter
Dubbo
的Handler
机制包装非常复杂,可以详细看下。下面给出一张图,供参考。具体的包装过程看文章 dubbo的handler机制
查看全部 浅谈模式 - 汇总篇
浅谈模式 - 装饰者模式相关推荐
- 浅谈企业中台商业模式及建设思路
浅谈企业中台商业模式及建设思路 文章目录 浅谈企业中台商业模式及建设思路 前言 企业中台的定义和能力 企业中台的商业故事 企业中台的商业模式 构建企业中台时不同的企业初衷 企业中台的价值主张 企业中台 ...
- 浅谈Mediator仲裁者模式
一.前言 Mediator模式又称为仲裁者模式或中介者模式,所起的作用就是仲裁和中介,帮助其它类之间进行交流.在仲裁者模式之中,我们要明确两个概念,那就是仲裁者(Mediator)和组员(Collea ...
- 精通python设计模式-浅谈Python设计模式 - 原型模式
声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...
- 浅谈Ble-Mesh的LPN模式
选择LPN模式的原因: 能有效的降低产品功耗. 比如:一个温湿度传感器产品,需要超过设定阈值才会从上送数据,这样就没有长时间唤醒时间,就无法接收到网关下发的设置数据,这时候就需要LPN模式.LPN的节 ...
- 浅谈工厂和建造者模式
最近在写安卓项目,在引入rxJava和Retrofit发现大量引用的建造者模式.那在此就记录和简单介绍一下两者的区别和使用方法. 工厂模式和建造者模式都属于创建型模式,它对类的实例化进行了抽象. 1. ...
- 十、结构型模式——装饰者模式
以前谈到过继承会破坏封装,因此采用组合的方式更好,那么装饰者模式就是组合的实现模式 一.模式产生初衷 孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领.他变成鱼儿时,就可以到水里游泳:他变 ...
- 7.js模式-装饰者模式
1. 装饰者模式 给对象动态增加职责的方式称为装饰者模式. Function.prototype.before = function(beforefn){ var _self = this; retu ...
- 装饰者模式---装饰者模式和桥接模式的区别
装饰者模式: 什么是装饰者模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 装饰者模式又称为包装模式,它主要是为了扩展对象的功能,包装类通过持有对象的引用(将对象传到 ...
- java中什么是装饰者模式? 装饰者模式的使用!!
其实无论是代理模式还是装饰模式.本质上我认为就是对原有对象增强的方式~ 一.对象增强的常用方式 很多时候我们可能对Java提供给我们的对象不满意,不能满足我们的功能.此时我们就想对Java原对象进行增 ...
最新文章
- 有人说 Maven 很简单,我却被 伤害 过
- 鸡兔同笼 n为总数,m为总腿数,a为鸡,b为兔
- Android 图片平铺实现方式
- 《糖豆人:终极淘汰赛》成功背后蕴含了何种设计?
- 使用Netbeans开发App Engine Java
- iOS - Masonry自动布局
- VBA 自制 TreeView 树视图,附加控件 TreeView 最优替代方案
- 3d激光雷达开发(ransac的思想)
- red hat linux基本命令行,Red Hat Enterprise Linux4 一些常用命令总结
- python3入门基础语法总结_Python基础语法总结(3)
- CPDA|数据分析很难学?分享最有效的学习路径!
- win7定时关机命令_只需9步教你轻松设置win7系统定时关机,无需任何工具
- [PTA]6-12 判断奇偶性
- Xcode8写代码闪退
- Android 语言码_国家码
- L1-009 N个数求和 (20 分)
- 企业邮箱怎么弄企业邮箱是什么邮箱求一个企业邮箱账号
- 低代码助力制造型企业——工时管理系统
- 著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。
- linux网络掉线频繁怎么设置,解决ssh登录的时候,没操作总是会自动掉线的设置办法,100%有效...