Design Patterns
文章平均质量分 92
主要为Java设计模式的初学者提供帮助,采用uml建模与具体代码实现的方式使内容丰富详实、具体、通俗易懂。
_昨日重现
专注于移动端系统开发
展开
-
Java设计模式博客全目录
今天来对这23种设计模式做个总结。咱使用设计模式的目的是为了可重用代码、让代码更容易被他人理解、保证代码可靠性,当然设计模式并不是万能的,项目中的实际问题还有具体分析。咱不能为了使用设计模式而使用,而是在分析问题的过程中,想到使用某种设计模式能达到咱需要的效果,而且比不使用设计模式更有优势,那么咱该考虑使用设计模式了。原创 2014-10-13 02:04:52 · 5587 阅读 · 5 评论 -
Java设计模式菜鸟系列(二十三)访问者模式建模与实现
访问者模式(Visitor):把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定而算法又容易变化的系统。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者;而它的缺点就是增加新的数据结构很困难。访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。原创 2014-10-13 00:36:28 · 2848 阅读 · 0 评论 -
Java设计模式菜鸟系列(二十二)中介者模式建模与实现
中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。中介者模式只需关心和Mediator类的关系,具体类与类之间的关系及调用交给Mediator就行。原创 2014-10-13 00:02:13 · 2552 阅读 · 0 评论 -
Java设计模式菜鸟系列(二十一)享元模式建模与实现
享元模式(Flyweight):运用共享的技术有效地支持大量细粒度的对象。主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销。在某种程度上,你可以把单例看成是享元的一种特例。享元与单例的区别:1、与单例模式不同,享元模式是一个类可以有很多对象(共享一组对象集合),而单例是一个类仅一个对象;2、它们的目的也不一样,享元模式是为了节约内存空间,提升程序性能(避免大量的new操作),而单例模式则主要是共享单个对象的状态及特征。原创 2014-10-12 22:27:53 · 2547 阅读 · 0 评论 -
Java设计模式菜鸟系列(二十)解释器模式建模与实现
解释器模式(Interpreter):它定义了对象与对象之间进行某种操作之后会得到什么值。一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。解释器模式用来做各种各样的解释器,如正则表达式的解释器等等。原创 2014-10-12 17:17:29 · 2366 阅读 · 0 评论 -
Java设计模式菜鸟系列(十九)备忘录模式建模与实现
备忘录模式(Memento): 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象。Memento设计模式用来备份一个对象的当前状态,当需要的时候,用这个备份来恢复这个对象在某一个时刻的状态。原创 2014-10-12 16:21:25 · 3209 阅读 · 0 评论 -
Java设计模式菜鸟系列(十八)责任链模式建模与实现
责任链模式(ChainOfResponsibility): 有多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出者并不清楚最终哪个对象会处理该请求。1、责任链模式可以实现,在隐瞒客户端(不知道具体处理的人是谁)的情况下,对系统进行动态的调整。2、链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。原创 2014-10-12 15:16:47 · 2446 阅读 · 0 评论 -
Java设计模式菜鸟系列(十七)桥接模式建模与实现
桥接模式(Bridge): 把事物和其具体实现分开(抽象化与实现化解耦),使他们可以各自独立的变化。假设你的电脑是双系统(WinXP、Win7),而且都安装了mysql、oracle、sqlserver、DB2这4种数据库,那么你有2*4种选择去连接数据库。按平常的写法,咱要写2*4个类,但是使用了桥接模式,你只需写2+4个类,可以看出桥接模式其实就是一种将N*M转化成N+M组合的思想。原创 2014-10-12 01:20:27 · 2847 阅读 · 0 评论 -
Java设计模式菜鸟系列(十六)原型模式建模与实现
原型模式(Prototype):该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。而这里的复制有两种:浅复制、深复制。浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。1、浅复制的核心是super.clone(),它调用的是Object的clone()方法,而在Object类中,clone原创 2014-10-11 17:45:36 · 2451 阅读 · 0 评论 -
Java设计模式菜鸟系列(十五)建造者模式建模与实现
建造者模式(Builder):工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理。简单起见,就拿之前的工厂方法模式进行修改一下就可以得到建造者模式。建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。所以与工厂模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建复合对象,多个部分。原创 2014-10-07 23:32:39 · 4184 阅读 · 0 评论 -
Java设计模式菜鸟系列(十四)代理模式建模与实现
代理模式(Composite):代理模式其实就是多一个代理类出来,替原对象进行一些操作。比如咱有的时候打官司需要请律师,因为律师在法律方面有专长,可以替咱进行操作表达咱的想法,这就是代理的意思。代理模式分为两类:1、静态代理(不使用jdk里面的方法);2、动态代理(使用jdk里面的InvocationHandler和Proxy)。下面请看示例:原创 2014-10-07 19:41:42 · 6166 阅读 · 2 评论 -
Java设计模式菜鸟系列(十三)状态模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653状态模式(State):允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式说白了就是一个对像有不同的状态,不同的状态对应不同的行为,它其实是对switch case这样的语句的拓展。封装基类状态的行为,并将行为委托到当前状态。原创 2014-10-06 17:22:30 · 2657 阅读 · 0 评论 -
Java设计模式菜鸟系列(十二)组合模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653组合模式(Composite):组合模式有时又叫部分-整体模式,将对象组合成树形结构来表示“部分-整体”层次结构。组合模式在处理树形结构的问题时比较方便。原创 2014-10-06 16:11:42 · 3527 阅读 · 3 评论 -
Java设计模式菜鸟系列(十一)迭代器模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39807741迭代器模式(Iterator):提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。迭代器模式就是顺序访问集合中的对象,这句话包含两层意思:一是需要遍历的对象,即集合对象,二是迭代器对象,用于对集合对象进行遍历访问。原创 2014-10-06 14:28:48 · 2937 阅读 · 2 评论 -
Java设计模式菜鸟系列(十)模板方法模式建模与实现
模板方法模式(Template Method):在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以再不改变算法结构的情况下,重新定义算法中的某些步骤。简而言之:模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。模板方法模式:一个抽象类中,有一个主方法,再定义1...n个方法,可以抽象,可以不抽象,定义子类继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。原创 2014-10-05 21:47:34 · 3170 阅读 · 0 评论 -
Java设计模式菜鸟系列(九)外观模式建模与实现
外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一样,可以将类与类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类与类之间的耦合度,该模式中没有涉及到接口。原创 2014-10-05 20:46:52 · 3176 阅读 · 0 评论 -
Java设计模式菜鸟系列(八)适配器模式建模与实现
适配器模式(Adapter):将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。1、类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。2、对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Adapter类,持有原类的一个实例,在Adapter类的方法中,调用实例的方法就行。3、原创 2014-10-05 19:52:51 · 4081 阅读 · 0 评论 -
Java设计模式菜鸟系列(七)命令模式建模与实现
命令模式(Command):将“请求”(命令/口令)封装成一个对象,以便使用不同的请求、队列或者日志来参数化其对象。命令模式也支持撤销操作。命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开。从上面的示例可以看到:命令模式将“动作的请求者”从“动作的执行者”对象中解耦出来,这就是将方法的调用封装起来的好处。原创 2014-10-05 17:08:16 · 3777 阅读 · 0 评论 -
Java设计模式菜鸟系列(六)单例模式建模与实现
单例模式保证了一个类只有一个实例,且提供一个访问全局点的方式,更加灵活的保证了实例的创建和访问约束。系统中只有一个实例,因此构造方法应该为私有 饿汉式:类加载时直接创建静态实例;懒汉式:第一次需要时才创建一个实例,那么getInstance方法要加同步synchronized 饿汉式比懒汉式要好,尽管资源利用率要差,但是不用同步synchronized。原创 2014-10-05 00:44:42 · 3709 阅读 · 2 评论 -
Java设计模式菜鸟系列(五)抽象工厂模式建模与实现
抽象工厂模式(Abstract Factory):抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品。这样做有个好处:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。原创 2014-10-04 23:25:47 · 3502 阅读 · 0 评论 -
Java设计模式菜鸟系列(四)工厂方法模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895工厂方法模式(Factory Method)分为三种:一、普通工厂模式。就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。1、uml建模图:原创 2014-10-04 22:29:17 · 4691 阅读 · 0 评论 -
Java设计模式菜鸟系列(三)装饰者模式建模与实现
装饰者(Decorator)模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。对于装饰者模式,它其实是一种包装,所以我更愿意称它为一种包装。像咱们以前经常使用的Java里面的IO流就用到了装饰着模式。比如:BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));这里file1为目标对象,而像BufferedReader、InputStreamRead原创 2014-10-03 22:23:03 · 3366 阅读 · 0 评论 -
Java设计模式菜鸟系列(二)观察者模式建模与实现
观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一来,当一个对象改变状态时,依赖它的对象都会收到通知并自动跟新。Java已经提供了对观察者Observer模式的默认实现, Java对观察者模式的支持主要体现在Observable类和Observer接口。先看uml模型图:原创 2014-10-03 19:03:28 · 3330 阅读 · 4 评论 -
Java设计模式菜鸟系列(一)策略模式建模与实现
今天开始咱们来谈谈Java设计模式。这里会结合uml图形来讲解,有对uml建模不熟的可以参考我的另一篇博文uml建模。首先,个人觉得模式的设计就是一个将变化的东西和不变(稳定)的东西分离的过程。咱们的应用中可能有很多需要改变的地方,而模式要做的就是把它们“抽取”出来并进行“封装”和“实现”,因此更多的时候咱们是面向接口编程。下面将结合《Head First 设计模式》这一书中的某些具体案例以及本人的理解进行讲解。如果大家透过看图能说出是哪种模式并能进行具体的代码实现及加以应用,反之也能做到,那么我想关于J原创 2014-10-01 23:47:44 · 5300 阅读 · 3 评论