设计模式
william_cr7
你只有十分努力,才能配得上你的梦想!
展开
-
设计模式之动态代理
jdk动态代理与cglib动态代理实现1.jdk动态代理(1)代理模式:代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护...原创 2017-11-04 17:40:38 · 282 阅读 · 0 评论 -
设计模式之观察者模式
1、设计思路观察者模式又称为发布/订阅(Publish/Subscribe)模式。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。主题只知道观察者实现了某个接口(也就是Observer接口)。主题不需要知道观察者具体类是谁、做了些什么或其他任何细节。主题唯一依赖的东西是一个实现Observer接口的对象列表,所以我们可以随时增加观察者和删除观察者。有新类型的观察者出现时,主题的代码原创 2017-12-22 22:10:51 · 219 阅读 · 0 评论 -
设计模式之装饰者模式
1、装饰者模式装饰者模式(Decorator Pattern),装饰者模式也称为包装模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式相比生成子类更加灵活,提供了有别于继承的另一种选择。装饰者模式可以静态的,或者根据需要可以动态的在运行时为一个对象扩展功能。被装饰者和众多的装饰者都是继承自一个接口,他们有着一样的行为特性。装饰者模式是继承的另一种选择方式,继承是在编...原创 2017-12-30 23:17:06 · 207 阅读 · 0 评论 -
设计模式之生成者与消费者模式
1、生产者与消费者模式多线程中,生成者与消费者是一个很典型的例子。生产者就是生产数据的线程,消费者就是消费数据的线程。生产者与消费者模式是通过一个共享资源缓冲区来解决生产者和消费者的强耦合问题,生产者与消费者之间不需要通信,生产者生产的产品放入阻塞队列中,而消费者从阻塞队列中从取出产品,阻塞队列就相当于一个缓冲区,同时生成与消费还需要有一个生产与消费的平衡,这样讲生成者与消费者进行解耦。原创 2017-12-17 15:20:42 · 2201 阅读 · 0 评论 -
设计模式之原型模式
1、原型模式 就是从一个现有的对象克隆一个新的对象,克隆出来的新对象与原来的对象赋值一样。她的本质就是字节码复制,性能高于反射。浅拷贝能够直接拷贝其实际内容,包括八大基本类型和String类型。深拷贝需要重写clone()方法。克隆不执行构造方法,直接走字节码复制。应用场景:拷贝复制的对象2、代码实现(1)浅拷贝package pattern.prototype.simpleclone;...原创 2018-02-27 22:53:22 · 210 阅读 · 0 评论 -
设计模式之自己实现动态代理
基于前一篇设计模式之代理模式,我们来深入分析下JDK动态代理是如何实现的,并自己实现JDK动态代理。github代码:github动态代理代码,老铁,如果喜欢可以给看小星星,谢谢。1、JDK动态代理原理分析(1)通过被代理对象的引用,利用反射获取所有接口;(2)通过Proxy类动态生成一个新类,并实现所有接口;(3)反射调用时将增强的代码添加在被代理类目标方法前后;(4)编...原创 2019-06-23 11:43:06 · 651 阅读 · 0 评论 -
设计模式之模板模式
1. 模板模式使用场景模板模式是大家常见的设计模式之一,相信你早已使用过JdbcTemplate、RestTemplate等,很显然这就是模板模式的体现。2. 代码实现我们以封装数据库操作的JdbcTemplate为例。public class JdbcTemplate { private DataSource dataSource; public JdbcTem...原创 2019-08-04 11:31:35 · 259 阅读 · 0 评论 -
设计模式之策略模式
1.策略模式使用场景策略模式注重的是对算法的封装,用户不需要知道每个算法的实现细节,之需要给用户提供不同算法的选择权。例如支付场景支持支付宝、微信、银联、财付通,用户只需要从中选择一种方式进行支付即可。使用策略模式可以减少代码中if-else判断逻辑,可以更好的进行扩展。2.代码实现定义策略接口类,及其实现类import com.william.javacore.pat...原创 2019-08-20 10:16:21 · 225 阅读 · 0 评论