
设计模式
java实战中,设计模式的运用
iloveoverfly
年轻人不讲code德
展开
-
代理(Proxy)是什么?为什么要使用代理模式?Spring与Dubbo如何运用代理模式的?
代理是什么代理模式,就是为其他的对象提供一种代理,以控制对这个对象的访问。Proxy代理对象与被代理对象对于调用方来说,完全一致,并且Proxy代理对调用方隐藏了被代理对象的实现细节。流程如下:为什么要使用代理模式没错,代理模式就是这么简单,可以这么理解,Proxy代理对象向调用方统一了对被代理对象的所有方法。有时,在调用被代理对象的正在执行的方法前,可能需要增加参数的校验逻辑,或者打印日志的逻辑;在执行完方法后,可能需要统计执行的时间,触发结束的事件等等逻辑。此时,如果在Proxy代理对象原创 2020-06-04 23:36:41 · 6773 阅读 · 0 评论 -
责任链如何设计?Tomcat和Netty分别是如何实现过滤器链和事件链?
在业务开发中,对于同一类逻辑处理,一般都是都是归类为一组集合,类似于一条业务链来处理,流程如下:举个例子,在下单过程中,会对生成订单进行很多条件判断。通常,会定义一个校验接口Validator定义生成订单的条件判断业务的抽象;在下单过程因为有很多不同的条件判断,所以,就会在下单的服务中,定义类似于一组的校验业务,例如,定义集合List<Validator> validators。如果,在链式业务处理过程中,对于不同的订单会有校验逻辑需要满足条件才能判断,这时如何进行过滤呢?如果在不同原创 2020-05-22 20:03:34 · 3703 阅读 · 0 评论 -
出行行业计价模块的设计模式实践
业务场景介绍在价格的计算中,通常的流程如下:根据一组价格配置,计算订单基础的价格。 根据用户拥有的优惠对象,例如优惠券,积分,会员级别等,计算出优惠以后的价格。如上,价格计算的流程就算完了,是的,流程就是这么简单,简单到流程图都省略了,你会怎样去设计这段流程的代码呢?根据设计模式中开闭原则,单一原则,依赖倒转原则。在该模块中,总共涉及到装饰模式,策略模式,单例模式,工厂类,责任链模式,...原创 2020-03-23 00:56:31 · 4026 阅读 · 0 评论 -
策略模式-SpringCloudSecurity教你如何玩
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。简单理解就是创建一个 context 对象,动态的选择运行时的策略。spring cloud security中SecurityC...原创 2020-02-17 13:00:57 · 1788 阅读 · 0 评论 -
组合设计模式-SpringCloudSecurity教你如何玩
组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。简单理解就是,整体和部分的接口定义是一致的,在使用的时候,只有调用整体的接口就行,部分接口有新增的自定义,组合到整体就可以了。spring cloud security组合设计模式的实现在spring cloud security中访问令牌的产生实现,就是一个典型的组合设计模...原创 2020-02-16 18:51:12 · 1307 阅读 · 0 评论 -
装饰器模式-Mybatis教你如何玩
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。mybatis cache装饰器模式的实现源码学习中,以mybatis中的二级缓存Cache为推荐。在定义缓存Cache接口,实现各类缓存操作。PerpetualCache基于HashMap实现了内存的缓存操作。然而,其余缓存的特性,就没有基于PerpetualCache做继承或者直接修改...原创 2020-02-14 22:26:19 · 1468 阅读 · 0 评论 -
事件驱动模式-Tomcat和zookeeper教你如何玩
业务中,经常会设计到事件监听的场景。例如,用户注册成功后,发送优惠券,发送短信通知的操作;用户支付成功,app消息通知,用户短信通知的操作。类似场景,我们会想到是完成某项动作,就触发一系列操作,我们可以使用事件触发的机制实现。示例参考tomcat源码实现。事件的定义接口ApplicationEvent(应用事件)继承自java.util.EventObject定义事件;其他事件可以自定义,例如...原创 2020-01-02 09:48:35 · 2802 阅读 · 0 评论