设计模式
NoteDay
这个作者很懒,什么都没留下…
展开
-
观察者模式
1、概念对象之间多对一依赖的一种设计方案,被依赖对象(被观察者)为subject,依赖对象(观察者)为observers。subject通知observers变化。2、UML类图3、优缺点优点:以集合的方式管理观察者,包括注册、移除、通知等;遵守了ocp原则。4、应用场景zookeeper、netty的事件驱动(register相应的channel的相应处理)5、观察者模式与发布订阅模式的区别注:发布者与订阅者完全解藕。6、demosubject被依赖对象(被观察者)接口p原创 2020-08-12 11:11:08 · 184 阅读 · 0 评论 -
设计模式之单例模式的作用以及两种实现方式
1、作用:只产生单一实例对象。举例来说:就是为了只产生单一系列的产品。如冰箱类,此时单例是只产生某种具体型号类型的冰箱。2、单例模式的两种方式1.懒汉模式1.1线程安全的懒汉模式public class Singleton{private static Singleton instance; //权限须为私有。此时只有一个引用,并没有实例化 private Singleton() {//私有...原创 2016-10-10 10:58:38 · 645 阅读 · 0 评论 -
代理模式之动态代理之一JDK动态代理
动态代理之JDK动态代理的实现方式 原理:反射 1、代理类(相应的切面逻辑一个代理类即可):package org.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 采用JDK动态代理必须实现I...原创 2018-04-11 14:39:45 · 202 阅读 · 0 评论 -
代理模式之动态代理之一CGLIB动态代理
cglib动态代理实现原理:asm CGLIB的核心类说明: net.sf.cglib.proxy.Enhancer – 主要的增强类 net.sf.cglib.proxy.MethodInterceptor – 主要的方法拦截类,它是Callback接口的子接口,需要用户实现 net.sf.cglib.proxy.MethodProxy – JDK的java.la...原创 2018-04-12 14:20:14 · 244 阅读 · 0 评论 -
代理模式之静态代理
静态代理1、代理类 Person的代理类:import org.dao.Person;public class PersonProxy implements Person { private Person person; public PersonProxy(Person person){ this.person = person; } ...原创 2018-04-12 14:40:11 · 226 阅读 · 0 评论 -
设计模式之策略模式
一、定义 策略模式:策略是对算法的封装,是一种形为模式,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。二、实现 1、范例 - 曹操败走华容道 三国演义中曹操败走华容道的故事,相传在赤壁之战之后,曹操的船舰被刘备烧了,曹操逃离时面前有两条路:1、平坦的大路。2、泥泞的华容道。面对这两条路,曹操没有选择大路而选择有炊烟的小路「华容道路」,理由—实则虚之,虚则实之,那么...原创 2018-09-06 18:01:25 · 168 阅读 · 0 评论 -
记单例模式用枚举方式实现
copy url:https://www.cnblogs.com/chiclee/p/9097772.html为什么要用枚举实现单例模式(避免反射、序列化问题)1 引言相信如果能看到我这篇博客的小伙伴,肯定都看过Joshua Bloch大神说过的这句话:“单元素的枚举类型已经成为实现Singleton的最佳方法”。其实,第一次读到这句话,我连其中说的单元素指什么都不知道,尴尬。后来,网上看了...转载 2019-08-21 14:45:21 · 353 阅读 · 0 评论