![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA设计模式
NullPointerExcept
这个作者很懒,什么都没留下…
展开
-
IO设计模式:Reactor和Proactor对比
平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少;这里学习下其模型结构,重点对比下两者的异同点;反应器ReactorReactor模式结构Reactor包含如下角色:Handle 句柄;用来标识socket连接或是打开文件;Synchronous Event D转载 2016-11-21 17:18:55 · 442 阅读 · 0 评论 -
解释器模式
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:行为类模式类图:解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。解释器模式的结构抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret转载 2017-05-03 09:11:55 · 511 阅读 · 0 评论 -
命令模式
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法转载 2017-05-03 09:12:34 · 232 阅读 · 0 评论 -
中介者模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构中介者模式又称为调停者模式,从类图中看,共分为3部分:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去转载 2017-05-03 09:13:06 · 749 阅读 · 0 评论 -
备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这转载 2017-05-03 09:13:33 · 343 阅读 · 0 评论 -
java设计模式之建造者模式
定义:建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同表示时。角色在这样的设计模式中,有以下几个角色:1、Builder:为创建一个产品对象的各个部件指定抽象接口。2、ConcreteBuil转载 2017-04-26 16:56:16 · 1628 阅读 · 0 评论 -
用java实现建造者模式
最近在公司阅读代码时发现有些实体类具有很多的属性。于是就想到了用建造者模式进行优化一下。跟工厂模式和抽象工厂模式一样,建造者模式也属于创建型设计模式。该设计模式主要用于解决在工厂模式和抽象工厂模式中由于对象具有众多属性所带来的问题。这些问题主要三个方面:在客户端程序与工厂类传递参数的参数的过程中很容易出错,因为大部分情况下,参数类型相同,而且对于客户端程序来说这是比较难以维护。一些变量转载 2017-04-26 16:55:28 · 2028 阅读 · 0 评论 -
快速理解Java中的五种单例模式
解法一:只适合单线程环境(不好)package test;/** * @author xiaoping * */public class Singleton { private static Singleton instance=null; private Singleton(){ } public static Single原创 2017-04-26 14:59:33 · 357 阅读 · 0 评论 -
建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。转载 2017-04-26 18:32:51 · 254 阅读 · 0 评论 -
工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码[java] view plaincopyinterface IProduct {public void productMethod();}class转载 2017-04-27 09:50:45 · 287 阅读 · 0 评论 -
迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:[java] view plaincopypublic static void print(Collection co转载 2017-05-02 09:14:51 · 399 阅读 · 0 评论 -
策略模式
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图:策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方转载 2017-05-02 09:14:15 · 215 阅读 · 0 评论 -
反应器(Reactor)模式
概述Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别:有无通知(是否轮询)堵塞和非堵塞区别:操作结果是否等待(是否马上有返回值),只是设计方式的不同NIO 有一个主要的类Selecto转载 2016-11-21 17:22:25 · 259 阅读 · 0 评论 -
观察者模式的浅析
观察者模式的浅析简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 观察者模式的结构 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model转载 2017-01-16 11:42:51 · 270 阅读 · 0 评论 -
Java帝国之单例设计模式
前言:本文原作者是王钦誉,原文链接:https://xiaoqinyu0000.github.io/Java/JavaSingleton/之前王钦誉还写过《Java帝国之拨云见日识回调》。这篇文章很长,讲了单例模式的方方面面,建议认真读完。1背景在Java帝国,有一个隐蔽的村庄叫IO村,村里每个人都身怀绝技。其中,SocketIO、HttpIO、FileIO转载 2017-02-24 09:20:01 · 660 阅读 · 0 评论 -
原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类转载 2017-04-28 09:11:08 · 278 阅读 · 0 评论 -
观察者模式
定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:行为类模式类图:在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署的功能,就像转载 2017-04-29 08:02:16 · 351 阅读 · 0 评论 -
JAVA中的观察者模式实例教程
观察者模式是一种行为设计模式。观察者模式的用途是,当你对一个对象的状态感兴趣,希望在它每次发生变化时获得通知。在观察者模式中,观察另外一个对象状态的对象叫做Observer观察者,被观察的对象叫着Subject被观察者。根据GoF规则,观察者模式的意图是:定义对象之间一对多的依赖关系,一个对象状态改变,其他相关联的对象就会得到通知并被自动更新。Subject(被观察者)转载 2017-04-29 08:07:34 · 601 阅读 · 0 评论 -
模版方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图:事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功转载 2017-04-28 09:10:40 · 229 阅读 · 0 评论 -
抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接转载 2017-04-27 09:51:33 · 716 阅读 · 0 评论 -
访问者模式
定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图:访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首先来看一个简单的例子,代码如下:[java] view plaincopyclass A {public转载 2017-05-01 17:00:43 · 317 阅读 · 0 评论 -
Spring的IOC原理
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些转载 2017-04-27 09:52:07 · 654 阅读 · 0 评论