设计模式
Java码界探秘
本博客不再维护,搬家到 http://zthinker.com。个人公众号(Java码界探秘)
展开
-
设计模式之Facade
Facade模式的定义: 为子系统中的一组接口提供一个一致的界面.Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null;转载 2013-05-12 14:18:55 · 585 阅读 · 0 评论 -
Dynamic Proxy 在 Java RMI 中的应用
2000年9月6日,Rickard Oberg (Jboss 的主要作者之一) 在RMI-USERS 邮件组贴了一个标题为 "HOWTO: Use Dynamic Proxies as RMI stubs + HOWTO: Export dynammic proxies as RMI objects" 的贴子, 展示了Dynamic Proxy 如何用在Java RMI 中。利用这项技术,程转载 2013-05-12 11:58:11 · 762 阅读 · 0 评论 -
RMI, Dynamic Proxies, and the Evolution of Deployment
ContentsStubs, Skeletons, the RMI Runtime,Serialization and Dynamic CodebasesNo More Skeletons: JDK 1.2Detouring Through Dynamic ProxiesClient-Side Fun and Games转载 2013-05-12 13:07:09 · 1285 阅读 · 0 评论 -
《JAVA与模式》之解释器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的转载 2013-10-14 17:43:45 · 601 阅读 · 0 评论 -
设计模式之模版方法模式
一.模版方法模式模版方法模式是最为常见的几种设计模式之一,而且你在工作中很可能已经使用过模板方法模式而你却没有意识到自己已经使用过这种模式,模版方法模式需要抽象类和具体子类协调完成,抽象类负责给出一个算法的轮廓和骨架,具体子类负责给出这个算法的各个逻辑步骤既具体子类负责填充这个轮廓和骨架,不同的子类有不同的填充方法;而将这些基本方法总汇起来的方法叫做模版方法,这个模板方法是在抽象类中以具体转载 2014-02-23 20:16:53 · 483 阅读 · 0 评论 -
java设计模式—工厂模式
简单工厂模式是类的创建模式,又叫静态工厂方法(static factory method),负责将大量有共同接口的类实例化,可以动态的决定将哪个类实例化,不必事先知道要实例化哪个类。顾名思义,就像是工厂的功能,客户需要什么样的产品,工厂就能生产。但是产品之间应该有某种关联性,即有共同的接口,不能让一个工厂去生产火腿肠。工厂模式中创建是不同类的对象。工厂的老板可以根据客户不同的需要进原创 2012-02-12 10:07:46 · 432 阅读 · 0 评论 -
适配器(Adapter)模式
江苏 无锡 缪小东 本篇主要讲述适配器设计模式。1日常生活中的适配器 适配器的例子在日常生活中随处可见。 例如:中国的电源电压为220V,而日本的电源电压110V,在国内使用日本原装电器时,就必须有一个电源适配器将220V的电压适配至110V。 新的电脑鼠标一般都是USB接口,而旧的电脑机箱上根本就没有USB接口,而只有一个P转载 2013-07-13 17:22:33 · 615 阅读 · 0 评论 -
工厂方法与抽象工厂的区别
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别:工厂方法模式只有一个抽象产品类,而抽原创 2012-02-11 15:45:46 · 405 阅读 · 0 评论 -
Java IO 框架整理
昨天笔试时碰到了IO流的题目,很久没接触IO编程了,所以那道题目做的不行。搜了一下,这篇文章总结的很有条理,果断转载。转自:http://tanshenghui.javaeye.com/blog/618724===================================可从IO的类层次,IO框架的设计模式来论述。 总体来说,IO可以分为字节流和字符流转载 2014-03-15 17:20:52 · 631 阅读 · 0 评论 -
设计模式之中介者模式(Mediator)
一、初识中介者模式那些年,我们一起上过的大学,班级里有班长,有团书记。想一想如果没有QQ这种通讯工具的话,那么班长或者团支书该怎样下达消息呢??同时,班级上两个同学之间也可惜沟通啊,沟通一下,院里哪个女生,哪个帅哥呀~~~如果没有QQ的话,大概就是下面的情景:哎呀呀,看看这个乱那。如果同学的数目多起来就会变成网状的结构啦。原本把一个系统分割成一些对象是可以增强复用性的,但是转载 2014-03-17 11:13:44 · 467 阅读 · 0 评论 -
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式。第 1 部分 分析了 Tomcat 的工作原理,第 2 部分将分析 Tomcat 中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的软件设计起到一定的借鉴作用。3 评论:许 令波, Java 开发工程师, 淘宝网转载 2014-03-17 22:44:38 · 522 阅读 · 0 评论 -
数据库 -- 由数据库连接池引出的三种设计模式
笔记摘要: 这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准的数据源,我们需要去实现javax.sal.DataSource接口, 在实现过程中对于链接对象的close方法进行了不同的实现,以便在关闭close的时候,将连接对象放回连接池,而不是关闭掉,针对这一问题,提供了3种不同的解决 方案,涉及了转载 2013-10-08 18:20:01 · 781 阅读 · 0 评论 -
Java单例对象同步问题探讨
在本文中,作者向大家讲述了Single Call 模式的原理,同时也介绍了Single Call 模式的实现问题。 评论:邓明 (dengming@cn.ibm.com), 高级信息系统工程师, IBM中国有限公司 商业咨询服务部2003 年 12 月 10 日内容单例对象(Singleto转载 2013-10-07 22:16:25 · 677 阅读 · 0 评论 -
组合模式
一、组合模式简介(Brief Introduction)组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 二、解决的问题(What To Solve)解决整合与部分可以被一致对待问题。三、组合模式分析(Analysis)1、组合模式结构Component类:组合中的对象声明接口,转载 2014-03-20 19:31:41 · 552 阅读 · 0 评论 -
设计模式(17)-Chain of Responsibility Pattern
行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。行为模式分为类的行为模式和对象的行为模式两种。类的行为模式:类的行为模式使用继承关系在几个类之问分配行为。对象的行为模式:对象的行为模式则使用对象的聚合来分配行为。在后面将要介绍的行为模式包括以下几种:Chain转载 2014-02-23 16:22:06 · 524 阅读 · 0 评论 -
单例模式中为什么用枚举更好
本文由 ImportNew - 刘志军 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。枚举单例(Enum Singleton)是实现单例模式的一种新方式,尽管单例模式在java中已经存在很长时间了,但是枚举单例相对来说是一种比较新的概念,枚举这个特性是在Java5才出现的,这篇文章主要讲解关于为什么我们应该使用枚举来实现单例模式,它与传统方式实现的单例模式转载 2014-01-20 23:00:01 · 1927 阅读 · 0 评论 -
策略模式与工厂模式比较
这段时间看了一些设计模式,看到策略模式与工厂模式的时候,总是感觉他们很相似,不要区分,到具体的场景了你可能还在徘徊到底用工厂还是策略呢?这几天就想写一篇关于策略模式与工厂模式区别的文章,但一直没思路,昨天跟淘宝mm聊了聊,今天早上思路顿时开阔。当时我在说明策略模式与工厂模式区别的时候举了一个例子。说你要去买件衣服,给你50块钱,策略模式的做法就是去京东、当当、淘宝、卓越转载 2012-02-11 15:11:07 · 473 阅读 · 0 评论 -
装饰模式与代理模式的区别
学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是 找了很多资料,想弄清楚这两者之间到底有什么区别。结果发现这一篇英文文章讲的很清晰,就翻译一下,供参考。 首先,让我们先看一下下面的这两个UML类图,他们分别描述了装饰器模式和代理模式的基本实现。转载 2012-02-12 17:56:11 · 443 阅读 · 0 评论 -
JDK源码分析——动态代理源码(Proxy类)
读源码,怕过两天又忘记了,还是记录下吧..动态代理最重要的实现就是Proxy.newInstance ,那我们直接看这个方法public static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)//这里有三个参数,第一个是传入classl转载 2012-02-12 10:44:23 · 1370 阅读 · 1 评论 -
Java源码分析:深入探讨Iterator模式——迭代器模式
java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很转载 2012-02-08 18:18:07 · 671 阅读 · 0 评论 -
JDK源码分析之Set类详解——适配器模式的应用
JDK源码中Set类是我们开发过程中经常用到的,那么本文将会向你介绍JDK源码中Set类的一些构造,使我们在编程中高效的应用。AD:JDK源码分析Set类,因为Set类是经常要用到的,那我们知道JDK源码中Set类在其中不可以有相同的元素,那么判断这个元素是否相同是如何实现的呢,我们看下下面这张图: 对JDK源码分析之Set类在这张类图上,转载 2012-02-08 15:58:58 · 1125 阅读 · 0 评论 -
通过Java Swing看透MVC设计模式
一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由两个主要的部分构成,一部分使得它具有了按钮应该具有的动作特性,例如可以被按下。另外一部分则负责它的表现,例如这个按钮是代表了A还是B。 看清楚这两点你就发现了一个很强大的设计方法,这种方法转载 2012-03-31 23:15:23 · 725 阅读 · 0 评论 -
设计模式——策略、代理模式
属于对象行为模型,用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使他们互相替换;将算法的责任和算法本身分隔开,委派给不同的对象管理,把算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说就是:准备一组算法,并将每一个算法封装起来,使他们可以互换。类图如下:这个模式设计到三个角色:环境(context):持有一个strategy类的引用转载 2012-02-12 10:09:50 · 557 阅读 · 0 评论 -
JDK中的动态代理
江苏 无锡 缪小东 写到代理模式这章,不得不提到JDK中的动态代理,它是java语言自身对动态代理的支持,类似于JDK中在java.util包中提供Observable类和Observer接口提供对观察者模式的语言级支持。关于动态代理的好处可以从网络上流行的中用动态代理类实现记忆功能>>、使用JAVA中的动态代理实现数据库连接池>>、通过JAVA的动态代理机制控制事务>> 、用转载 2013-07-12 08:44:18 · 726 阅读 · 0 评论 -
装饰器(Decorator)模式
江苏 无锡 缪小东 Decorator设计模式是典型的结构型模式(在GOF的那本模式的Bible中将模式分为:1.创建型模式;2.结构型模式;3.行为模式三种)。它的主要用意是:动态地为对象添加一些额外的功能。(记住上面两种颜色的词汇,理解装饰器模式的精髓所在!)下面是GOF的《Element of reusable Object-Oriented Software》中对D转载 2013-07-13 17:22:58 · 575 阅读 · 0 评论 -
跟屌丝大哥学习设计模式--享元模式
一、上篇回顾 通过上篇的讲述,我们知道装饰模式,特别适合对某个类型的对象,动态的增加新的职责,应用程序就像使用原来的对象一样使用对象新增的装饰后的功能,装 饰模式就好像是穿了一层层的外壳,这样的方式避免了通过继承来为类型添加新的职责的形式可取,通过继承的方式容易造成子类的膨胀,但是当装饰类太多的时 候,也是个难以维护的问题,至少是在装饰对象的时候,我们可能需要多步操作来完转载 2013-10-08 18:21:21 · 958 阅读 · 1 评论 -
Visitor Pattern
MotivationCollections are data types widely used in object oriented programming. Often collections contain objects of different types and in those cases some operations have to be performed on all t转载 2013-10-11 20:00:00 · 723 阅读 · 0 评论 -
Java的设计模式
生命中唯一不变的事实就是世事时刻在变。这在软件开发的每一个阶段都不可避免。我们所要面对的挑战是:要以最小的延迟和最大的灵活性来适应变化。令人欣慰的是有人已经解决了你的设计问题,而且他们的方法已经形成了最佳实践了;这些公认为最佳实践的方法就是“设计模式”。今天我们要研究两个最流行的设计模式,学习怎样使用好的设计让你得代码更干净,让扩展性更好。适配器模式(Adapter Design转载 2014-01-24 20:32:34 · 520 阅读 · 0 评论 -
双重检查锁定及单例模式(ibm社区)
本文来自ibm社区 单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java转载 2014-03-20 19:12:00 · 579 阅读 · 0 评论