设计模式
node2017
这个作者很懒,什么都没留下…
展开
-
java设计模式-组合模式
应用场景: 组合模式就是专门用来处理树形结构的数据,如下图的结构实现的结构可以如下:举个例子说说明实现,这里我们使用查找文件系统的实例:首先是基础接口/** * 文件接口 * @author liuxg * @date 2016年5月25日 下午8:21:54 */public interface IFile { boolean searchFile(String fileName原创 2016-05-25 20:51:52 · 443 阅读 · 0 评论 -
java设计模式-责任链模式
什么是责任链模式: 将请求同一类资源的请求对象练成一条链,所提交的请求到某一个链节,如果该链节能处理则不必要往下传,不然则继续传到下一个对象链接去处理。开发中常见的场景: 1.springmvc的拦截器 2.java中,异常处理机制,抛出异常 3.javascript的事件冒泡机制责任链例子: 这里的场景是实现一个拦截器demo,所限当然是定义我们的拦截器,然后,使用时,就继承它/**原创 2016-05-28 18:32:01 · 1175 阅读 · 0 评论 -
java设计模式-备忘录模式
什么叫备忘录模式: 备忘录模式允许我们保存一个时间点上的数据,在出现误操作或者系统出错,我们可以恢复我们保存的那个点上的数据。开发中常见的场景: 1.事务操作 2.redis的持久化备忘录模式例子: 这里,我们实现的是注册学生信息,当然是我们先定义一个学生类package com.javademo.pattern.memento;public class Student { priva原创 2016-05-28 19:23:04 · 538 阅读 · 0 评论 -
java设计模式-观察者模式(广播机制,消息订阅)
什么叫观察者模式: 观察者模式是广播机制,消息订阅和推送的核心设计。开发中常见的场景: 1.手机中消息推送 2.后台群发信息观察者模式例子(自己实现) 首先是定义观察者接口并使用三个子类实现/** * 观察者接口 * * @author liuxg * @date 2016年5月27日 下午10:15:30 */public interface IObserver { p原创 2016-05-28 19:13:10 · 7317 阅读 · 2 评论 -
java设计模式-状态模式
什么叫状态模式: 一种事物会有多钟状态,而一种状态的切换会导致相应的动作,例如,水蒸发,升华,液化会导致水动作不一样,交通灯的红绿黄的变化导致车和人的动作不一样。开发中常见的场景: 1.OA系统公文状态管理 2.线程对象个状态之间的切换 3.银行系统中帐号的管理状态模式例子: 这里的实现的例子是交通灯状态的改变导致人行为的改变/** * 状态接口 * @author liuxg *原创 2016-05-28 19:03:54 · 643 阅读 · 0 评论 -
java设计模式-模板方法(方法回调,钩子函数)
什么叫模版方法模式: 模版方法其实就是父类定义了一整套的骨架流程,而其中的某些方法,需要子类来完成,这样子的好处是,方法流程已经定义好,子类要做的事情就是按着流程和模版自己写实现。开发中的模版方法模式: 1.spring data中的jdbcTemp 2.junit测试 3.数据库的访问封装模版方法模式例子: 这里实现的场景是用户去吃饭,首先是团购,然后到饭店吃饭,最后在美团点评,其中到饭原创 2016-05-28 18:58:28 · 8737 阅读 · 5 评论 -
java设计模式-策略模式
什么是策略模式: 策略模式就是处理类型较多,算法比较复杂,代码流程控制比较多,而且难以拓展,这时候,我们就可以使用策略模式了开发中常用策略模式场景: 1.Spring resouce接口 2.httpservlet中的service接口 3.javase中的gui编程,布局管理策略模式实现例子: 这里我们实现一个例子,是淘宝商城物品打折,根据用户的不同,打折的算发和策略也不同,我们可以为每原创 2016-05-28 18:52:05 · 581 阅读 · 0 评论 -
java设计模式-中介者模式
什么是中介者模式: 如果一个对象系统中,各个子对象都要相互交互,形成了网状结构,这时候,我们可以定义一个对象,各个子系统的处理和交互都交给它,由它统一调度。开发中使用的中介者模式: 1.mvc架构中的c,需要同时和m和v打交道 2.java.lang.reflect.Method#invoke()中介者模式例子: 这里的实现的场景是,软件产品的研发流程。所以我们定义下各个部门职能packag原创 2016-05-28 18:45:41 · 523 阅读 · 0 评论 -
java设计模式-外观模式
什么是外观模式: 外观模式其实就是封装,为子系统封装对外的一个接口,屏蔽内部复杂的操作,例如,我们要注册一家公司,我们可以找代理注册公司的机构,让它为我们处理注册所有的细节,而我们只需要面对注册公司处理流程就行。开发中外观模式场景: 常见的util包,例如spring的beanutils,FileUtils以及其他的工具类,其实使用的都是外观模式。外观模式实现例子: 实现的场景是一款软件产品开原创 2016-05-28 18:16:49 · 474 阅读 · 0 评论 -
java设计模式-装饰模式
什么是装饰模式: 装饰模式就是动态的为一个对象添加新的功能,它是一种代替继承的技术,毋须通过继承增加子类就能拓展对象功能的模式。开发中应用场景: 1.IO流中,设计的输入和输出 2.Servlet api提供的一个re quest对象的decrator模式的默认实现类HttpServletRequestWrap,遇到wrap字样的基本都是装饰模式 3.swing中图形设计界面的功能实现原创 2016-05-28 18:05:45 · 512 阅读 · 0 评论 -
java设计模式-单例模式
单例模式:保证一个类只有一个实例应用场景: 1.spring bean模式是单例模式,便于管理 2.数据库连接池单例模式,确保只有一个实例 3.读取配置文件也可以用单例模式实现方法: 1.懒汉模式:访问效率底,懒加载,线程安全/** * 单例懒汉模式 * @author liuxg * @date 2016年5月24日 上午7:43:31 */ public class Singl原创 2016-05-24 09:09:54 · 480 阅读 · 0 评论 -
java设计模式-工厂模式
工厂模式的作用: 使创建者和调用者分离,类似spring的控制反转应用场景: JDK中的Calendar的getInstance方法 JDBC中的connection的获取 XML解析DocumentBuilderFactory创建解析器 反射中的对象的newInstance()工厂模式主要分类: 1.简单工厂模式,最简单,使用最多,不易拓展 2.方法工厂模式,通过添加新的工程类实现拓原创 2016-05-24 20:24:38 · 493 阅读 · 0 评论 -
java设计模式-建造者模式
适用场景: 一个对象有多个子对象构成,我们要建这个对象的时候,需要很多步骤,构建多个子对象,然后再由子对象构成一个对象,我们就可以考虑用建造者模式建造者本质: 让建造子对象的builder和装配对象director解耦,从而建造出复杂的对象举个例子: 我们来构建一个电脑对象,它有鼠标,显示器,键盘等子对象构成,我们如何来装配这个对呢/** * 电脑实体类 * * @author liu原创 2016-05-24 20:56:29 · 521 阅读 · 0 评论 -
java设计模式-原型模式(浅复制,深复制)
使用场景: 多次创建重复的类,每个类又需要非常繁琐的数据准备和访问权限。原型模式类似用new创建出来的类,但又不new的类,new出来的类属性都是默认值,而用原型模式克隆出来的类,属性都和原对象一样。原型模式的优点是复制类效率高,而且避免重复无聊的new类动作下面,我们使用原型模式来clone一个类,这里的demo既有深复制也有浅复制首先是我们复制的实体类package com.javademo.原创 2016-05-24 21:32:51 · 702 阅读 · 0 评论 -
java设计模式-适配器模式
使用场景: 原有的接口不适合需求,需要增加新的接口来满足需求,在不修改原有接口的情况下,使用一个适配器,将原有的接口进行转化,转成客户所需要的类或接口在JDK使用: java.io.InputStreamReader(InputStream) (返回一个Reader) java.io.OutputStreamWriter(OutputStream) (返回一个Writer)举下例子: 首先,原创 2016-05-25 15:44:54 · 494 阅读 · 0 评论 -
java设计模式-代理模式(静态代理,动态代理)
什么是代理模式: 代理模式类似于买房中介,买房的一些繁杂过程你可以找人帮你代理,你直接付钱入住就行,也类是于明星的经纪人,什么签合同,免谈之类的事情就它让你搞定,你只需要演戏就行。代理的架构如下:其中代理,必须要有一个引用指向真实类。代理模式应用场景: 安全代理:屏蔽对真是角色的访问 远程代理:通过代理类处理远程方法调用 延迟加载:先加载轻量级的代理对象,真正需要的时候,再加载真实对象代理模原创 2016-05-25 18:51:23 · 565 阅读 · 0 评论 -
java设计模式-桥接模式
应用场景: 如果有如下图的应用场景,我们可以考虑用下下桥接模式他其实就是俩种类型进行组合,电脑类型,还有品牌类型,我们可以换成这样子来思考只要我们把纵轴和横轴进行桥接就能得到相应的品牌电脑了下面举个例子,首先我们来定义品牌接口还有实现类/** * 品牌接口 * @author liuxg * @date 2016年5月25日 下午7:54:12 */public interface Br原创 2016-05-25 20:05:56 · 572 阅读 · 0 评论 -
java设计模式-享元模式
什么是享元模式: 为了节省内存,共享一个对象,提供内存使用率,享元模式的关键在于区分共享的内部状态和非共享的外部状态。开发中常见的享元模式场景: 1.JDBC连接池,线程池 2.java String类的设计享元模式例子: 实现的场景是游戏中的飞机打出的子弹,子弹有级别和位置,级别状态可以共享,而位置状态不能共享。/** * 子弹类 * @author liuxg * @date 20原创 2016-05-28 18:25:37 · 517 阅读 · 0 评论