设计模式
爆裂码手
I thought coding was easy.
展开
-
设计模式——策略模式
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。组成:抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 具体策略角色:包装了相关的算法和行为。 环境角色:持有一个策略类的引用,最终给客户端调用。先看下策略模式的基本代码模版:代码:https://github.com原创 2016-11-28 14:02:38 · 327 阅读 · 0 评论 -
设计模式——组合模式+案例
先给个代码地址吧https://github.com/yyfyyf1994/knowledge/tree/master/src/yyf/designpatterns/composite组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式主要的结构:1.Component 是组合中原创 2016-11-21 16:51:37 · 2520 阅读 · 0 评论 -
设计模式——代理模式(理解静态代理和动态代理+代码)
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。我的理解: 就这么举个例子把。比如我们网购。我们是直接从淘宝上买东西,而不是去实体店。淘宝这个平台就是一个代理。我们只要在网上买好东西,淘宝、快递就会帮我们送过来。代理模式是对一个方法的加强,可以在这个方法执行的前后加原创 2016-11-25 11:37:45 · 433 阅读 · 0 评论 -
设计模式——单例模式(懒汉、饿汉)
单例模式在我们的代码中应用的太多了,比如我们常把XXXUtils写成单例,Sring管理的类默认也是单例。所以,总结以下吧。单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”我们先看看jdk源码中的应用:Runtime:public class Runtime { private static Runtime currentRuntime =原创 2016-11-28 14:27:00 · 347 阅读 · 0 评论 -
Java设计模式——观察者模式
定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 观察者模式的组成 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。原创 2017-11-29 11:54:07 · 226 阅读 · 0 评论 -
Java 动态代理的两种方式实例
package top.yuyufeng.test.dynamicProxy;/** * created by yuyufeng on 2017/8/18. */public interface HelloService { String hello(String words);} package top.yuyufeng.test.dynamicProx...原创 2017-08-18 22:57:51 · 672 阅读 · 0 评论 -
设计模式——装饰器模式
装饰器模式动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。结构抽象组件(Component):需要装饰的抽象对象。 具体组件(ConcreteComponent):是我们需要装饰的对象 抽象装饰类(Decorator):内含指向抽象组件的引用及装饰者共有的方法。 具体装饰类(ConcreteDecorator):被装饰的对象。 demo...原创 2018-05-28 13:54:17 · 249 阅读 · 0 评论 -
MyBatis源码阅读——装饰器模式在MyBatis中的应用
MyBatis中关于Cache和CachingExecutor接口的实现类也使用了装饰者设计模式。Executor是MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护;CachingExecutor是一个Executor的装饰器,给一个Executor增加了缓存的功能。此时可以看做是对Executor类的一个增强,故使用装饰器模式是核实的。Exec...原创 2018-06-06 14:45:38 · 1890 阅读 · 0 评论