设计模式
文章平均质量分 75
Static_lin
热爱技术热爱学习的程序猿
展开
-
设计模式之访问者模式(十五)(ASM原理分析)
从访问者模式到ASM框架动态生成字节码分析原创 2019-10-24 13:40:30 · 955 阅读 · 1 评论 -
设计模式之迭代器模式(十四)
文章目录前言什么是迭代器模式定义实现使用迭代器模式的好处总结前言今天介绍的这个设计模式,是我认为日常代码最常用的一个设计模式—迭代器模式。所以这篇文章将使用JDK集合类框架来介绍迭代器模式。在我们使用聚合类例如各种集合框架ArrayList、LinkedList、HashMap等等的集合类遍历时都会用到。那么此时可以引申出几个问题:迭代器模式是什么?为什么要用迭代器模式?它解决了哪些问...原创 2019-03-19 18:24:20 · 259 阅读 · 0 评论 -
设计模式之原型模式(十三)
原型模式是设计模式中算是简单的一种设计模式了,因为它有语言实现的支撑,只需要调用定义好了的方法即可使用,在写这篇设计模式之前,我看过很多资料,有几点比较疑惑的点,在这篇文章中验证,也顺便描述一下什么是原型模式。 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个定义也是很简单了,主要意思就是用一个实例当作是一个原型,通过拷贝这个实例去创建新的对象,就像西游记的美猴王...原创 2018-11-05 18:04:23 · 208 阅读 · 0 评论 -
设计模式之单例模式 (一)
单例模式是一个老生常谈的模式了,从我一开始学习JAVA的时候就听说过了,但为什么要有单例模式,又或是怎样的类可以或是需要做成单例模式的呢?在我的工作中接触到不少单例模式的例子,例如一个工厂类,或是对DAO层封装好了的工具类,它们都有一个共性就是这些类没有自己的状态,无论实例化多少次它们都是一样的,如果不做成单例模式的话应用里就有可能会有很多很多一摸一样的实例,这样会造成内存的浪费,GC工作量的...原创 2018-05-30 17:17:51 · 1327 阅读 · 1 评论 -
设计模式之代理模式 (二)
这个设计模式也是算比较经典常用的了,在Spring的AOP实现中就用到了JAVA自带的动态代理与CGlib的动态代理。在我初学的时候,这个设计模式十分晦涩难懂,我也是看了很多次才大概能理解到这个设计模式的精髓。画个图吧,我理解的代理模式是这样的,首先创建一个代理类Proxy,这个类拥有被代理类target的所有行为基础,然后改进被代理类中的某个方法(添加一些行为)。在调用target时实际...原创 2018-05-31 08:47:42 · 269 阅读 · 0 评论 -
设计模式之简单工厂 (三)
工厂模式分为工厂方法模式和抽象工厂模式两种,而简单工厂模式可以算是工厂方法模式的一个特殊实现吧。定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特...原创 2018-06-01 08:48:23 · 229 阅读 · 0 评论 -
设计模式之工厂方法模式 (四)
这个设计模式是由简单的简单工厂模式抽象化而来,怎么说呢,就是把工厂抽象成一个接口,具体的生产方法放到具体的工厂实现类里实现,这样就满足了开闭原则的对修改关闭,对拓展开发了。定义:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一...原创 2018-06-02 15:06:20 · 187 阅读 · 2 评论 -
设计模式之抽象工厂模式(五)
来到了最后的工厂模式,抽象工厂模式。这个工厂模式应该是工厂模式的终极形态了,顾名思义抽象,它真的挺抽象的,但是如果你可以理解工厂方法模式的话,这个模式应该也不会太难。它与工厂方法模式的区别在于抽象工厂接口不再只生产一个抽象产品,而是一堆抽象产品,抽象产品接口也不止一个,而是有很多个。定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。以上定义与类图来自百度百科...原创 2018-06-02 15:31:07 · 217 阅读 · 0 评论 -
设计模式之观察者模式 (六)
说到观察者模式,在学习这个模式的过程中,我联想了许多观察者模式的应用场景,这个模式应该算项目中最有可能会用到的一个模式吧,比如在早年的YY直播横行的年代,我一开电脑就是先打开YY,因为我的YY里订阅了很多喜欢的主播,在主播开播的时候,YY自动会推送我一个开播提醒,我想,这就应该是观察者模式了吧。(订阅-发布模式) 定义:观察者模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从...原创 2018-06-03 21:27:10 · 216 阅读 · 0 评论 -
设计模式之策略模式 (七)
前面讲动态代理的时候有提到策略模式,在Spring中用到了两种代理方式,一个是JDK动态代理一个是CGLib代理,那到底Spring使用哪种代理创建代理呢?这里就用到了策略模式,由ProxyFactoryBean这个类来决定使用哪种策略,下面看看策略模式是怎么样的一个东西吧。定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独...原创 2018-06-03 23:40:52 · 178 阅读 · 0 评论 -
设计模式之适配器模式 (八)
说到适配器模式,顾名思义,就像我们平时使用的手提电脑的电源适配器,经过适配,它可以为我们的手提电脑提供一个稳定适合的低压直流电。定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four一般适配器模式有三种实现:1. 类适配器 使用继承的方式实现比如之前讲过的观察者模式里,观察者都必须实...原创 2018-06-04 14:29:19 · 209 阅读 · 0 评论 -
设计模式之模板方法模式 (九)
说到了模板方法模式,顺便提一下,这个模式让我更深入理解抽象类的使用。在我初学JAVA的时候,很不理解为什么会有抽象类的存在,接口不就能代替实现和抽象类一样的功能吗,也同样不是很能理解一个接口的作用,当我学习了设计模式,更深入理解了面向抽象编程,才知道原来接口是这么强大的东西,同时在学习了模板方法模式之后,我就了解到了抽象类与接口的不同之处,原来抽象类是这么用的,瞬间体会到了抽象类的强大。定义:...原创 2018-06-05 13:42:15 · 261 阅读 · 0 评论 -
设计模式之装饰器模式 (十)
定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。定义与类图来自百度百科。这个定义说到了装饰器模式的几个重点,不改变源文件,不使用继承,然后可以扩展一个对象的功能,这几个重点很好的介绍了装饰器模式。那么装饰器模式是怎么实现的呢,类图上Componet是一个被装饰的接口,ConcreteComponent是具...原创 2018-06-06 15:13:28 · 215 阅读 · 0 评论 -
设计模式之门面模式(外观模式) (十一)
说到了门面模式,有些地方又叫做外观模式,这个模式在平时做Web项目中应该是经常用到,像我们的Service层与DAO层,就是用到了门面模式,Controller层本来是需要跟一个个DAO打交道,但是有了Service层,它直接与DAO打交道,Controller就可以直接使用Service,我们只需专注在Service上写业务逻辑与操作DAO的各种方法,分离了责任,这个模式我认为最重要的功能就是解...原创 2018-06-07 09:41:55 · 911 阅读 · 1 评论 -
设计模式之享元模式(十二)
定义:享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。由定义我们可以知道几点:1. 享元模式是用来共享相似的物件,从而达到减少内存...原创 2018-07-03 20:58:42 · 171 阅读 · 0 评论 -
设计模式之学习笔记 (前言)
最近一直在学习设计模式,希望在这里记录一个学习过程,让自己不仅是读懂设计模式的定义和类图,更要是能敲出一个简单的demo,并能写下来设计模式各方面的运用。读懂、会用、书写出来,我认为这三个是不同的阶段,读懂了不一定会用,会用了不一定能把它写下来,能独立写出来我认为需要有自己的理解,这样记忆才会更深刻。同样这三个过程也是一个循序渐进的过程,不可跳跃的步骤。设计模式传送门:单例模式...原创 2018-05-30 15:11:35 · 414 阅读 · 0 评论