java设计模式
文章平均质量分 77
BruceZhang
计算机专业的一个小学生
展开
-
java设计模式---访问者模式
访问者模式实现的基本思路: 定义一个就接口来代表要新加入的功能,为了通用,也就是定义一个通用的功能方法来代表新加入的功能。在对象结构上添加一个方法,作为通用的方法,也就是可以代表要添加的功能,在这个方法中传入具体的实现新功能的对象。在对象实现的具体实现对象中实现这个方法,回调传入具体的实现新功能的对象,就相当于调用到新功能上了。访问者的功能:能给一系列对象透明第添加新功能,从而避免在维护期间对一转载 2013-07-24 20:22:05 · 1041 阅读 · 0 评论 -
java设计模式---策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm v转载 2013-07-24 10:26:52 · 1185 阅读 · 0 评论 -
java设计模式---备忘录模式
备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。涉及角色:1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。2.Memento(备忘录):负责存储Originat转载 2013-07-23 20:37:13 · 994 阅读 · 0 评论 -
java设计模式---状态模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一转载 2013-07-24 10:06:30 · 1357 阅读 · 0 评论 -
java设计模式---模板方法模式
模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画笔种类而定.拿黑色签字笔当画笔,结果当然就是签字笔的字样;当用铅笔来画,得到的也只会是灰黑色的铅笔字;如果用五颜六色的彩色笔,自然能创出让人眼花的多色字.但是,无论使用哪种文具,制作出来的字样都还是脱转载 2013-07-23 22:02:49 · 1264 阅读 · 0 评论 -
java设计模式---备忘录模式
一、引子 俗话说:世上难买后悔药。所以凡事讲究个“三思而后行”,但总常见有人做“痛心疾首”状:当初我要是……。如果真的有《大话西游》中能时光倒流的“月光宝盒”,那这世上也许会少一些伤感与后悔??当然这只能是痴人说梦了。 但是在我们手指下的程序世界里,却有的后悔药买。今天我们要讲的备忘录模式便是程序世界里的“月光宝盒”。 二、定义与结构 备忘录(Memento)模式又称标记(转载 2013-07-23 20:49:52 · 933 阅读 · 0 评论 -
java反射详解
下面开始正文。【案例1】通过一个对象获得完整的包名和类名?123456789101112131415package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...}转载 2013-07-21 19:08:58 · 1546 阅读 · 0 评论 -
java设计模式---三种工厂模式之间的区别
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。 工厂方法工厂方法是针对每一种产品提供一个工厂类。通过不同转载 2013-07-22 21:23:05 · 2604 阅读 · 0 评论 -
java设计模式---抽象工厂模式
1.概念 《设计模式》一书中对于抽象工厂模式是这样定义的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 // 产品 Plant接口 public interface Plant { }//标志接口 //具体产品PlantA,PlantB public class PlantA implements Plant { public Plant转载 2013-07-22 19:32:24 · 1513 阅读 · 0 评论 -
java设计模式---三种工厂模式
工厂模式提供创建对象的接口。工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory).GOF在《设计模式〉中将工厂模式分为两类:工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)。1. 简单工厂模式(Simple Factory)简单工厂模式又叫做静态转载 2013-07-22 21:11:26 · 2064 阅读 · 0 评论 -
java设计模式---抽象工厂模式
工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准.以开发项目的DAO层为例,在项目中客户的需求是常常变动的,临时更换数据库的需求也是常常发生的,那我们要如何解决跨数据库的功能,这里就要使用到抽象工厂模式了.工厂模式常常用于创建多系列化的对象(如Orale系列,MySql系列)1.首转载 2013-07-22 20:41:08 · 1176 阅读 · 0 评论 -
java设计模式---构建者模式
【建造者模式应用场景举例】 比如在玩“极品飞车”这款游戏,那么每一关的地图会千变万化,简单的来说,地图会有晴天和阴天之分,那么创建地图时就要根据晴天或者阴天来对地图上的场景,比如:天空,树,房子,和路面进行渲染,这个过程是一个固定的,每创建一个新地图都要执行这几个渲染,这是针对高级配置的电脑来说的。 现在拥有低配置电脑的人不在少数,那么他们就不能玩游戏了吗?完全可以!只要将地图中占用资转载 2013-07-20 19:58:01 · 1310 阅读 · 0 评论 -
java设计模式---工厂方法模式
【工厂方法模式应用场景举例】 比如在玩“极品飞车”这款游戏,晕了吧,我喜欢极品飞车:),在玩这款游戏时,游戏者可以选择从不同品牌来选择赛车,那么这个“品牌”其实也就是工厂,每个工厂生产的赛车都不一样,这就是典型的工厂方法的应用场景。 【工厂方法模式解释】 类型:创建模式 定义一个用于创建对象的接口,让其子类来决定实例化哪一个类(产品),工厂方法使一个类的创建延迟到其子类中。转载 2013-07-20 20:56:57 · 1150 阅读 · 0 评论 -
java设计模式---装饰器模式
Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样。因此,装饰器模式具有如下的特征:它必须具有一个装饰的对象。它必须拥有与被装饰对象相同的接口。它可以给被装饰对象添加额外的功能。用一句话总结就是:保持接口,增强性能。装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。它与对象的适配器模式的异同点如下。转载 2013-07-24 16:13:20 · 1139 阅读 · 0 评论 -
java设计模式---模板方法模式
【模板方法模式应用场景举例】比如在玩“极品飞车”这款游戏,每辆车都有显示速度的仪表盘,但有可能A车显示的是蓝色的仪表盘,B车显示的是红色的仪表盘,分析中可以发现,他们都 有车速度的值,但显示的方式不太一样。其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)!【模板方法模式解释】类型:行为模式 模板方法模式定义一个操作中算法的骨架,而将一些步骤延迟到子类转载 2013-07-23 21:38:02 · 1076 阅读 · 0 评论 -
java设计模式---访问者模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Visitor(访问者)模式是比较常用的一个模式. 应用场景:对于某对象结构中各元素的操作。如果需要在不修改各元素类的前提下定义作用于这些元素的新操作,也就是动态的增加新的方法转载 2013-07-24 21:32:46 · 1477 阅读 · 0 评论 -
java设计模式---迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:public static void print(Collection coll){ Iterator it = coll.iterator();转载 2013-07-24 17:06:47 · 1237 阅读 · 0 评论 -
java设计模式---装饰器模式
装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。具体被装饰者和抽象装饰类都继承于抽象被装饰者类,继承的是类型,而不是行为。行为来自装饰者和基础组件,或与其他装饰者之间的组合关系。装饰者通常是用其他类似于工厂或生成器这样的模式创建的。 具体例子抽象被继承者类:Beverage.javapackage com.designpattern.de转载 2013-07-24 16:17:32 · 1099 阅读 · 0 评论 -
java设计模式---命令模式
1.概念 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。 在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作co转载 2013-07-24 15:22:38 · 1085 阅读 · 0 评论 -
java设计模式---命令模式
Command 命令模式Intent:Encapsulate a request as an object , thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.瞎谈:其实很好理解。命令模式,关心的就是命令(转载 2013-07-24 14:38:48 · 1270 阅读 · 0 评论 -
java设计模式---策略模式
策略模式(Strategy Pattern)体现了两个非常基本的面向对象设计的原则 1、封装变化的概念; 2、编程中使用接口,而不是对接口的实现。 策略模式定义了一个共同的抽象算法接口,其子类实现这个接口定义的方法,并且都有各自不同的实现,这些算法实现可以在客户端调用它们的时候互不影响的变化。 子算法之间是弱连接的关系,提高了软件的可扩展性与可重用性。 策略模式组成转载 2013-07-24 10:46:52 · 1167 阅读 · 0 评论 -
java设计模式---状态模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,State(状态)模式是比较常用的一个模式. 应用场景:如果需要在 1、不同的状态(可能会对应相应的行为), 2、不同的行为; 间反复进行切换,则应优先考虑状态模式。 在此转载 2013-07-24 09:58:54 · 1151 阅读 · 0 评论 -
java设计模式---状态模式
定义:允许一个对象的内部状态改变时改变它的行为。对象看起来似乎修改了它的类。本质:根据状态来分离和选择行为。状态:对象实例的属性值。行为:对象的功能,大多对应到方法上。状态模式的功能:分离状态的行为,通过维护状态的变化,来调用不同装态对应的不同功能。状态和行为是相关联的,可以描述为:状态决定行为。状态模式和策略模式的结构师完全一样的,但它们的目的、实现、本质却完全不一样。状态模式的行为是平行的,不转载 2013-07-23 22:24:26 · 1184 阅读 · 0 评论 -
java设计模式---原型模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再转载 2013-07-23 19:19:41 · 1082 阅读 · 0 评论 -
Java的深拷贝和浅拷贝
熟悉C++的朋友对这个话题应该很熟悉,浅拷贝就是指两个对象共同拥有同一个值,一个对象改变了该值,也会影响到另一个对象。深拷贝就是两个对象的值相等,但是互相独立。本来想把以前写的一篇文章扩充一下,没想到居然牵扯出很多复杂的问题。本文测试环境是windows xp sp3中文版、NetBeans6.7.1,JDK1.6-update16。这里抛砖引玉,希望大家能提宝贵意见。 首先,Java中常用转载 2013-07-23 16:45:04 · 1182 阅读 · 0 评论 -
java设计模式---原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了转载 2013-07-23 15:23:05 · 1037 阅读 · 0 评论 -
java设计模式---策略模式
1,什么是策略模式?策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2,策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。 3,设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意转载 2013-07-24 10:56:10 · 1192 阅读 · 0 评论 -
java设计模式---构建者模式
创建者模式和工厂模式有点类似,不过关注点不同。工厂模式往往只关心你要的是什么,二不关心这个东西的具体细节是什么。而创建模式则关心的是这个东西的具体细节的创建。拿创建人物来说,我们关心的不仅是创建一个人物,还要关心他的性别,肤色和名字,则可以使用创建者模式:package builder;/** * * DOC 种族角色 * */public class Race { p转载 2013-07-20 19:59:36 · 1627 阅读 · 1 评论 -
java设计模式---工厂方法模式
简单工厂模式的应用就是用来创建一个对象,简单工厂模式是将所有对象的初始化集于一个具体的工厂类来实现,这个工厂类负责所有产品的创建,但是这种创建只能创建单一的产品,如简单工厂模式里的ChickenFactory这种工厂只能生产鸡肉这个系列的产品,而当需求发生变化时简单工厂模式就无法应对了。 例如:我再一次带MM光临了麦当劳时,这次MM不想吃鸡翅了,而是选择了吃汉堡,可见这个时候ChickenF转载 2013-07-20 20:59:17 · 1198 阅读 · 0 评论 -
java设计模式---享元模式
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Flyweight(享元模式)模式是比较常用的一个模式。 Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.应用场合很多:比如你要从一个数据库中读转载 2013-07-20 11:12:35 · 1448 阅读 · 0 评论 -
java设计模式---桥接模式
桥接模式的目的是把抽象和具体实现分离,其uml类图如下所示:public interface SendMessage { abstract void send(String message,String name);}public class EmailSend implements SendMessage{ public void send(String message,Str转载 2013-07-18 14:33:39 · 1096 阅读 · 0 评论 -
java设计模式---桥接模式
桥接模式的英文是 Bridge ,桥接模式关注抽象的设计。抽象是指包含了一组抽象方法的类,这些抽象方法可能包含多个实现。 实现抽象的一般做法是创建类的层次结构,该层次结构的顶部是一个包含抽象方法的抽象类,该类的每一个子类都提供这些抽象方法的不同实现。但是,当需要对该层次进行子类化时,这一做法就存在不足了。 你可以创建一个桥,然后把这些抽象方法移到接口中,这样,抽象就依赖于接口的实现。 桥接模式的意原创 2013-07-18 14:27:29 · 1187 阅读 · 0 评论 -
java设计模式---桥接模式
《设计模式》一书对Bridge是这样描述的:将抽象与其实现解耦,使它们都可以独立地变化。大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。下面是《Design Patterns Explained》书中的例子。其结构图如下: 下面是它的实现:abstract class Shape{转载 2013-07-18 10:50:01 · 1031 阅读 · 0 评论 -
java设计模式---合成模式3
实例下面以一个逻辑树为例子,以上面的原理图为蓝本,看看如何实现并如何使用这个树,这个结构很简单,但是如何去使用树,遍历树、为我所用还是有一定难度的。 这里主要用到树的递归遍历,如何递归、如何控制遍历层级,如何将逻辑关系转换为(类似)物理关系,这些都是有相当难度的。 废话就不说了,看看便知。/** * Created by IntelliJ IDEA. * User: leizhimin *转载 2013-07-17 21:45:40 · 1222 阅读 · 0 评论 -
Java设计模式---外观模式
外观模式(Facade)外观模式的意图是:为子系统提供一个接口,便于它的使用。解释:简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种比较简单的设计思想,但是,也是最常用的一种设计模式。举例: 当你想吃橘子的时候,你需要做那几件事呢? 1:去买橘子 2:剥橘子 3:吃橘子 这样去一步一步的调用各个方法是不是觉得很麻烦呢?所以,我们需要做的原创 2013-07-17 16:32:17 · 1293 阅读 · 0 评论 -
java设计模式---适配器模式
类适配器 客户的开发人员定义了一个接口,期望用这个接口来完成整数的求和操作,接口定义如下: Java代码 public interface Operation{ public int add(int a,int b); } 开发人员在了解这个接口的定义后,发现一个第三方类,里面有一个方法能实现他们期望的功能,其代码如下: Java代码 public class OtherOp转载 2013-07-17 14:37:34 · 1063 阅读 · 0 评论 -
UML 类图. 对象图. 接口图. 用例图 .包,参与者. 依赖关系. 泛化/继承关系. 关联关系 .聚合/聚集关系. 实现关系 组合关系。
结构元素结构元素包括,类,对象,接口,用例,参与者。类图类图图示 类图是UML中最基本的元素了吧?根据OO的思想“天下一切皆对象”,而类是对象的抽象。 左侧图示为一个类图。顶端“ClassName”表示类名 中间部分为该类的属性,其中分别表示为可访问性,属性名,以及属性的数据类型。 第三部分为该类的方法,包括方法的可访问性,方法名,方法的参数以及方法的返回值。转载 2013-07-17 15:06:11 · 4794 阅读 · 0 评论 -
java设计模式--适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情转载 2013-07-17 11:03:17 · 1094 阅读 · 0 评论 -
Java回调函数的理解
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个转载 2013-07-16 21:06:41 · 1373 阅读 · 9 评论 -
design principle:java 回调与委派/委托机制
博客 design principle:模拟 android Button 控件点击事件 主要说了一下模拟 android 的 Listener 模式,其实这就是一种委派与回调机制的体现。委派,也可以叫做委托,从字面上来理解的话,应该是委托其他类做事情而自己不做或者只做一部分工作;而回调,就是调用自己的方法。在 java 中,这两种机制很类似,你姑且可以认为它们就是一码事。推荐一篇博文给大家:转载 2013-07-16 20:16:36 · 1145 阅读 · 0 评论