设计模式
文章平均质量分 50
WeiXiao_Hyy
这个作者很懒,什么都没留下…
展开
-
贯穿设计模式-中介模式+模版模式
中介者模式可以通过中介者来封装一系列的对象交互,将对象间复杂的关系网状结构变成结构简单的以中介者为核心的星形结构,从而简化对象间的关系。该设计模式是比较常用的设计模式,比如Spring源码中的refresh方法里面的onRefresh方法就是模版方法。主要是AbstractClass对模版方法进行定义,ConcreteClass1-n是子类实现父类特有的方法。其中Colleague的所有操作都是对中介者的操作,所以有Colleague指向Mediator的箭头;涉及到的项目样例代码均可以从。原创 2024-01-09 21:07:58 · 375 阅读 · 0 评论 -
贯穿设计模式-建造者模式+代理模式+原型模式
上述是静态代理的UML图,在实战中也需要注意掌握JDK和CGLIB动态代理的原理和适用场景。将不同的组件进行组装,最终生成一个最终的对象。需要区分一下引用拷贝,浅拷贝,深拷贝的区别。涉及到的项目样例代码均可以从。一般来对现有方法的增强。原创 2024-01-09 20:55:29 · 948 阅读 · 0 评论 -
贯穿设计模式-装饰者模式
旨在不改变一个对象逻辑的前提下,为这个对象添加其他额外的职责原创 2024-01-09 20:34:04 · 602 阅读 · 0 评论 -
贯穿设计模式-责任链模式
实时地,根据city,sex,product字段进行业务投放,比如:北京的男生;四川的电脑等等 → 责任链模式(责任链表模式)由于Apollo使用Docker进行安装,导致Apollo访问不到configserver的地址。handler自身含有next指针和链表类似,使用Apollo进行动态配置字段进行规则变更。涉及到的项目样例代码均可以从。Apollo访问不到内网地址。执行时在JVM参数添加。原创 2024-01-06 15:29:25 · 766 阅读 · 0 评论 -
贯穿设计模式-策略模式+工厂模式+门面模式+享元模式
样例所有代码可以[https://github.com/WeiXiao-Hyy/Design-Patterns](https://github.com/WeiXiao-Hyy/Design-Patterns)获取原创 2024-01-02 23:44:30 · 414 阅读 · 0 评论 -
贯穿设计模式-享元模式思考
在写享元模式的时候,会想这里使用ConcurrentHashMap来保证并发,没有使用双重锁会不会有问题?但是在synchronize代码块里面需要尽量避免throw异常,希望有经验的同学能够给出解答?使用双重检查锁后的代码。原创 2024-01-02 12:20:03 · 617 阅读 · 0 评论 -
SingleFlight设计模式-Java实现
而互斥锁在第一个请求返回后会释放锁,其他阻塞的请求协程需要逐个获取互斥锁,然后进行 double check 发现缓存已经存在,然后释放锁。也就是说所有请求的线程由于互斥锁的缘故,都是。Single Flight 当第一个请求返回时立刻通知唤醒所有等待的请求协程。此刻过后,所有的线程都不会阻塞,可以并发的继续执行。如果有多个并发请求同时请求同一个资源,那么只需要执行一次实际的请求,然后将结果返回给所有的请求者。缓存热点key失效了,缓存击穿,大量请求打到数据库。上述多次运行后,结果为什么不同。原创 2023-12-23 22:10:47 · 486 阅读 · 0 评论 -
贯穿设计模式-适配器模式+桥接模式
在某些JVM当中,编译器为了性能问题,会进行指令重排。在上述代码中new Singleton()并不是原子操作,有可能会被编译器进行重排操作。类似于补丁的方式,如果频繁使用会导致类爆炸。原创 2023-12-15 22:01:49 · 406 阅读 · 0 评论 -
贯穿设计模式-状态模式+观察者模式
但是这里有一个问题,如果在Context中保存了抽象的状态类(是一个有状态的Context),那么只能支持一个订单状态的转化(因为在状态转化中currentState需要保存当前的订单状态,但在多并发的场景下不能只用一个Context,应该为一个订单一个Context)为了解决以上问题引入了无状态的Context。来进行设计,同时状态的转化需要作出对应的操作,比如订单付款之后需要使用异步消息通知店家系统进行发货等等,则需要使用到。+subject:代表着关联关系,在Subject中关联观察者。原创 2023-12-20 23:22:17 · 449 阅读 · 1 评论 -
贯穿设计模式-组合模式+访问者模式
需求商品类目多,变化快,并且要求2个小时内生效现状前端有自己的缓存2小时,后端依赖redis,先查redis,后查mysql。原创 2023-12-18 21:26:06 · 388 阅读 · 0 评论 -
贯穿设计模式-单例模式
设计模式单例模式饿汉懒汉懒汉 + 同步Double CheckHolder枚举单例模式饿汉package DesignPatterns.Singleton;/** * @program: JavaLife * @author: JiaLe Hu * @create: 2020-12-15 14:38 **/// 饿汉式public class Singleton1 { private byte[] data = new byte[1024]; private sta原创 2020-12-15 15:38:23 · 110 阅读 · 1 评论