![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
itlemon2021
年华易逝,且行且珍惜!
展开
-
CGLIB动态代理
JDK动态代理必须提供接口才可以使用,但是在某些环境下,接口这个条件是无法满足的,这时候JDK动态代理就无法使用了,只能采取第三方技术,比如CGLIB动态代理技术。它的最大的优势就是不需要提供接口,只要一个非抽象类就可以实现动态代理。第一步:定义真实服务类package com.lemon.designmode.bean;/** * @author lemon * @d...原创 2018-02-11 15:31:25 · 6043 阅读 · 0 评论 -
JDK动态代理
JDK动态代理是java.lang.reflect.*包提供的方式,它必须借助一个借口才能产生一个对象,也就是说JDK动态代理是对接口的代理。一般要使用JDK动态代理,首先得定义接口,然后再对这个接口的实现类对象进行代理,产生代理对象。Spring的AOP就是JDK动态代理的应用之一。第一步:定义接口JDK动态代理必须有接口,这里仅仅定义一个及其简单的接口用于示例。pa...原创 2018-02-11 12:20:04 · 3544 阅读 · 0 评论 -
基于JDK动态代理的自定义拦截器
由于JDK动态代理比较难以理解,程序设计者会设计一个拦截器接口供开发者使用,开发者只需要知道拦截器接口的方法和含义以及作用即可使用,无需知道动态代理是如何实现的。本文介绍基于JDK动态代理实现一个简单的拦截器。第一步:定义拦截器接口package com.lemon.designmode.interfaces;import java.lang.reflect.Method;...原创 2018-02-12 13:23:04 · 3739 阅读 · 0 评论 -
设计模式01——Iterator模式
定义迭代器(Iterator)模式,从其英文单词可以看出,有反复做某件事的意思。迭代器模式常用于数据集合中,对数据集合中的数据按照顺序进行遍历。它能提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。问题引入假设我们有一个书架,假设书架可以按照顺序放置无数本书,现在有一个需求,那就是遍历书架里面的所有的书籍,将书籍的名称打印出来。 常规的解决办法一般情...原创 2018-09-02 11:52:59 · 4598 阅读 · 3 评论 -
设计模式02——Adapter模式
定义适配器设计模式,顾名思义就是将适配器的作用总结抽象成为一种代码的组织方式,将现有的代码通过适配器进行适配,以满足项目对另外一个类或者接口的要求。换句话说就是将一个类的接口适配(包装/转换)成客户(调用者)希望的另一个接口。适配器设计模式有以下两种形式: 类适配器模式(使用继承的适配器) 对象适配器模式(使用委托的适配器) 问题引入我们常用的笔记本电脑的配...原创 2018-09-10 21:31:19 · 3754 阅读 · 0 评论 -
设计模式03——Template Method模式
定义模板方法(Template Method)模式就是带有模板功能的模式 ,组成模板方法的方法被定义在父类中,这些方法是抽象方法,在模板方法中规定了这些方法的执行流程,这些抽象方法需要子类来具体实现。换句话说,模板方法就是定义好了模板,也就是一定的流程,至于各个抽象方法的具体实现,则有子类们自己决定,所以查看父类的代码是无法知晓这些方法最终会进行何种具体处理,唯一知道的就是父类是如何调用这些方法...原创 2018-09-25 20:24:20 · 6070 阅读 · 0 评论 -
设计模式04——Factory Method模式
定义本系列文章《设计模式》中有一篇《设计模式03——Template Method模式》,在Template Method模式中,我们在父类中规定程序的处理流程,而在子类中实现具体的处理逻辑,如果我们将这种模板方法模式应用到生成实例中来,也就是用Template Method模式来构建生成实例的工厂,那么就形成了本文即将介绍的Factory Method模式。...原创 2018-10-30 12:50:39 · 3618 阅读 · 0 评论