
设计模式
文章平均质量分 73
冷面寒枪biu
怕什么真理无穷, 进一寸有一寸的欢喜
展开
-
设计模式--适配器模式(JDK中的应用)
本来想开始进行java集合框架的学习,但是看到集合框架中用到了适配器模式,所以先学习一下此设计模式,能让我们对java集合框架的设计思想理解更深入。JDK源码中应用了很多设计模式,在学习源码的遇到的时候会一一进行学习。闲言少叙,开始适配器模式。适配器模式定义适配器模式定义是:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。其别名为原创 2017-08-29 17:57:26 · 2324 阅读 · 0 评论 -
设计模式--JDK动态代理的实现与原理解析(1)
代理模式是一种很重要很有用的设计模式。被应用到很多著名的框架中,其中Spring Aop的底层就是通过JDK动态代理和CGLib动态代理实现的。其中,JDK动态代理是其默认实现。动态代理的作用就是在不修改原目标类的前提下,对目标类方法进行增强。比如横切一些逻辑:事务管理,日志记录,检验等。J相对于静态代理,JDK动态代理避免了重复编写代理类的缺点。只需要简单的指定一组接口及目标类就可以获得代理对象。原创 2017-06-29 16:21:39 · 516 阅读 · 0 评论 -
设计模式--JDK动态代理的实现与原理解析(2)
在上一篇博客中,实现了JDK的动态代理。但是,我们不仅要学会如何使用,更要理解其内部的具体实现。 我们是通过此方法获得对目标对象的代理类: public Object getProxy() { //参数意义:1. 当前类加载器 2. 目标类的class对象 3. 目标类的所有接口 4. 实现InvocationHandler接口的类 return Proxy.原创 2017-06-29 20:25:14 · 458 阅读 · 0 评论 -
设计模式--CGLib动态代理的实现与解析
在前两篇的JDK动态代理中,它是通过Proxy类和实现InvocationHandler接口实现的。但是此方式最大的缺点是:要求被代理的目标类必须实现一个接口,而且只能对接口中的方法实现代理。因为最终生成的代理类是继承了Proxy类以及实现了目标类的接口。 如果被代理的目标类没有实现接口,JDK就无法完成代理。这时,可以采用CGLib动态代理。JDK动态代理与CGLib动态代理均是实现Spring原创 2017-06-29 21:42:28 · 424 阅读 · 0 评论 -
设计模式--单例模式
单例模式是开发中经常用到的设计模式,单例模式的写法有很多种,主要有5种方式:饿汉式,懒汉式,双重校验锁,静态内部类和枚举。其中,一些方式有不同的写法。单例模式是确保一个类只有一个实例,必须自己创建自己的唯一实例。在计算机系统中,线程池、缓存、日志对象、打印机等程序对象常被设计成单例。原创 2017-02-10 20:26:53 · 327 阅读 · 1 评论 -
设计模式--装饰者模式(在IO体系中的应用)
上一篇介绍了适配器模式,它是将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。装饰者模式:动态的将责任附加到对象上(因为利用组合而不是继承来实现,而组合是可以在运行时进行随机组合的)用来扩展功能。若要扩展功能,装饰者提供了比继承更富有弹性的替代方案(同样地,通过组合可以很好的避免类暴涨,也规避了继承中的子类必须无条件继承父类所有属性的弊端)。我们的目标是允许类统一扩原创 2017-08-29 21:21:51 · 2413 阅读 · 1 评论 -
设计模式--工厂模式(简单工厂、工厂方法、抽象工厂模式)
工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位“大哥”——抽象工厂模式。这三种工厂模式各具特色,难度也逐个加大,在软件开发中它们都得到了广泛的应用,成为面向对象软件原创 2017-08-30 10:44:01 · 513 阅读 · 0 评论 -
设计模式--责任链模式
责任链设计模式是一种对象的行为模式,在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递原创 2017-10-27 10:33:38 · 321 阅读 · 0 评论