模式
genguyige
这个作者很懒,什么都没留下…
展开
-
java 模式之单例模式
开始研究java模式,有些东西还理解的不是很透彻 把他们记录下来加深理解,并且跟广大技术爱好者们共同探讨 单例模式,就是保证在堆中只创建某一个类的一个实例,单例模式有很多应用,比如说hibernate中的SessionFactory,比如在Spring中默认创建的类的实例都应该是单例模式的。 我觉得他是模式中最简单的之一了 有两种实现方式 1: packa...原创 2011-07-04 22:39:22 · 75 阅读 · 0 评论 -
访问者模式
今天在使用dom4j进行xml解析的时候使用到了访问者模式。 它的使用是这样的,由于dom4j的Node接口中定义了一个accept(Visitor visitor)方法,而Node虚类是dom4j中所有的节点的父类,就相当于Object类一样,但是我们对于xml中的节点的访问应该是不一样的,对于属性,我们应当访问属性名和属性值,对于元素我们应当访问元素值和元素名,对于处理指令我们又要使用不一样...2011-07-23 16:59:32 · 91 阅读 · 0 评论 -
备忘录模式
我更喜欢把它叫做备份模式 考虑这样一种场景:在我们做实验的时候,我们必须保证一步一步的做,并且在实验当前必须保证我前面的步骤都是正确的?不然如果出了问题,你都不知道是哪一步出的问题,好吧,如果你能保证前面的都正确,那么你在做下一步的时候,就要考虑我是不是能把情况恢复到这里,因为你下一步可能出错,所以你要有恢复的能力啊!这样你就得懂得备份,如果程序在下一步出现问题,你就用备份恢复一下。 ...2011-07-22 15:49:12 · 92 阅读 · 0 评论 -
门面模式
我们先来讨论一个很常见的问题。 餐馆吃饭的问题。 在有些餐馆,客人进去吃饭是需要自己找座位,自己倒茶,自己写菜单,然后将菜单交给服务员,由服务员去完成剩下的工作。 但是也有很多那种高级的餐厅,或者服务很周到的餐厅是这样做的,你一进门,就会有服务员领着你到给你安排座位(我们现在假设安排座位是专门一个部门来完成的,只是这个服务员直接问了座位部那些座位是空的,然后领着去对应的地方就可以了)。然后你...2011-07-22 12:02:59 · 86 阅读 · 0 评论 -
状态模式
现在有一个这样的场景。 对于TCP的连接,大家都知道,TCP是面向连接的一种通信方式,那么他有三种基本的状态 1:等待连接 2:连接 3:断开 那么每一个TCP都有这样三种操作,但是等等...如果一个TCP已经在连接状态了,那么它还能连接??显然不能,每一个TCP通信在一种状态下面只能有一种连接方式。 它的关系应当是这样的:在等待状态下只能进行连接,连接完后把状态改成连...2011-07-18 21:42:19 · 75 阅读 · 0 评论 -
组合模式
组合模式的定义:将对象表示 “部分---整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 大致意思就是这样,当我们有多个类型的对象,他们有共同点有不同点,并且所处的位置也不同,有的处在第一级,有的处在第二级,但是他们有些共同点,我们将他们都抽象成一种类型,这样对他们的使用将会有一致性。 打个比方:现在又商品,商品又分为商品种类和具体的商品,而商品种类下可能还有更细致...2011-07-18 09:47:03 · 89 阅读 · 0 评论 -
变压器模式
适配器模式又叫做变压器模式,也叫做包装模式。 学过物理的人都知道变压器是干嘛的。把一个非常高的电压转化成一个适合电器使用的电压,或者在电线传输的时候用高压传输也要把低压电转化成高压电,这就是变压器。 那么变压器模式也是这样,把原本不配套的组件,经过一个中间件转成一个可以在合适的地方使用的组件,这就是变压器的作用。 变压器模式的定义:讲一个类的接口变换成客户端所期待的另一种接...2011-07-17 23:32:49 · 258 阅读 · 0 评论 -
装饰模式
装饰模式的定义是:动态的给一个对象添加一些新的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式与代理模式的作用很像,都是在原有构建的基础上添加新的功能 装饰模式的角色说明:Component 抽象构建 是一个抽象类或者接口,它规定了我原始的构建应当事先说明。 ConcreteComponent 类 是以上构建的一个实现类 ,它是最需要修饰的一个类 De...2011-07-17 17:10:02 · 79 阅读 · 0 评论 -
责任链模式
今天学习了下责任链模式,对责任链模式有了一个初步的了解,这个模式有些复杂 比如有这样一种情况:有三个经理,A是负责人事的,B负责财务,C负责销售。他们都能对自己所管辖的领域里大大小小的事情进行处理。但是有一些新入职的职员根本不认识他俩,有的时候一个人事部的人跑去财务部领导那里报告情况,这个时候B就要把请求指引到A那里去,也有的时候B也不知道要找谁,就把请求传递给C,让C处理,C当然也没有权...2011-07-17 11:03:55 · 84 阅读 · 0 评论 -
策略模式
第一次接触到策略模式是在使用Spring的时候。当时接触了AOP的概念,知道了Spring中完成AOP实际上是代理模式。 默认会使用到java的动态代理机制,但是这个是有限制的,就是说只有在实现了接口的类才能被动态代理,那么没有实现接口的呢?Spring使用了CGLib,在内存中直接通过生成一个实例的时候将需要代理的东西加进去。 什么时候用动态代理,什么时候用CGLib 呢? Sprin...2011-07-16 23:49:39 · 68 阅读 · 0 评论 -
中介者模式
中介者模式的定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们的交互。 中介者模式有很广泛的应用,比如在MVC框架中,C就是一个中介者,他来协调V和M的调用,减少View和Model层得交互,在很多优秀的开源框架中都有很好的体现。 Mediator :抽象中介者角色 它定义统一的接口,用户各个同事角色之间的通信 ...2011-07-16 16:31:12 · 78 阅读 · 0 评论 -
原型模式
原型模式是一种很简单的设计模式 其实就是通过将一个类实现Cloneable接口并且重写clone方法,来创建一个类的多个实例。 比如说,我有一个工作需要大量的这个类的实例,但是由于创建这样一个类会花费大量的时间。一种解决方案是先创建一个类,然后通过clone方法大量复制,来得到这个类。 原型模式的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 它是在内存...2011-07-16 11:34:20 · 63 阅读 · 0 评论 -
建造者模式
今天学习了建造者模式 它的定义是这样的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 建造者模式中,有如下四种角色 1:Product产品类 通常实现的是模板方法和基本方法 2:Builder抽象建造者,规范产品的组件,一般是由子类实现 3:ConcreteBuilder 是先抽象类定义的所有方法,并且返回一个组建好的对象 4:Director导...2011-07-16 10:58:15 · 75 阅读 · 0 评论 -
代理模式
java中代理模式是使用最最广泛的一个模式了 在当今最流行的hibernate和Spring中都可以看到它的广泛应用。 比如说在hibernate中的延迟加载和Spring中的AOP.都有它巨大的功劳。 它的中心思想是,为其他对象提供一种代理以控制对这个对象的访问。 有三个角色,抽象主题角色,具体实现角色,代理主题角色 package com.gengu.代理; /*...2011-07-15 17:04:30 · 81 阅读 · 0 评论 -
模板方法模式
模板方法模式有这样的定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构既可重定义该算法的某些特定步骤。 模板方法的使用场景有: 1:多个子类有公有的方法,并且处理逻辑基本相: 2:重要重复的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现 3:重构时,模板方法模式是一个经常使用到的模式,把相同的代码抽取到父类...2011-07-15 16:26:45 · 81 阅读 · 0 评论 -
java 抽象工厂模式
抽象工厂模式,在很多场景下都有应用。 它有以下的优点 1:封装性,每个产品的实现类不是高层模块要关心的,它所要关心 的是接口和抽象类,他不关心对象是如何创建出来,只有工厂类去关心,只要知道工厂类是谁,我们就能得到一个需要的对象。 2:产品家族的约束为非公开状态。而抽象工厂模式针对的是多个产品等级结构。当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?...2011-07-15 14:44:52 · 120 阅读 · 0 评论 -
java 简单工厂模式
简单工厂模式也是一个应用很广泛的模式,但是可扩展性没有工厂方法模式高。 简单工厂模式设计到工厂角色,抽象产品角色以及具体产品角色等 工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑,工厂类在客户端的直接调用下创建产品对象,他往往由一个具体java类实现。 抽象产品:担任这个角色的类是由工厂方法模式所创建的对象的父类,或他们共同拥有的接口。通常由一个接...原创 2011-07-15 13:03:46 · 137 阅读 · 0 评论 -
工厂方法模式
简单工厂模式是最广泛被使用的一个模式,伟大的Spring就大量使用了它的思想 那么为什么要使用工厂模式呢? 首先,良好的封装性,代码结构清晰,对用户屏蔽了类实体的创建过程 其次,良好的可扩展性,在增加产品类的情况下,只要适当的修改具体工厂类或者扩展一个工厂类,就可以"拥抱变化"。 再次,屏蔽产品类,产品类如何变化,调用者根本不用担心,它只关心产品的接口,只要接口保持不变,系统的上层模...原创 2011-07-15 12:17:36 · 87 阅读 · 0 评论 -
观察者模式
恩,今天看了一道面试题说到了观察者模式,还不是很懂,看了看书,将代码实现了一遍。 有个大致的了解了。 观察者模式的定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 在《设计模式之禅》一书中,做着打了一个韩非子的比方,说的是这样一件事:韩非子是一个很有名的人,很多人在他身边安排了细作,监视他的一言一行,比如他吃饭了,那就通...2011-07-25 17:08:46 · 85 阅读 · 0 评论