interator迭代模式,学过数据结构的,都知道迭代是怎么一回事,最简单的链表也是用到迭代来一个一个地读取数据。利用迭代模式来读取一系列按一定规则来存储的数据,而你不必理会封装的数据存储的结构是怎么样的,一般都会提供一个叫next的函数,要读取数据,只要next个若干次就行了。
如果原本是对List编码的,但后来要修改为Set,如果你在读取元素的地方使用了Iterator,那么就不用修改此处的代码,这一点在《java编程思想》也提到了。
ChainOfResponsiblity责任链模式。 一系列对象之间的消息传递形成了线性的或循环的传递结构,例如A可以传给B,B可以传给C,C可以传给D……当条件不满足传递时,就停止传递。 例如,客户端对象发出一个请求给服务端处理,而客户端只知道服务端有n个服务对象可以对这个请求作出响应,但是客户端并不清楚哪个服务端对象是最合适处理这个请求的。最原始的处理方式,就是在客户端程序进行n个if else的语句判断。当服务端在添加一个服务处理对象时,便在 ...
facade外观模式,简单明了的讲是,子系统封装聚集模式。facade外观模式遵循了迪米特法则,体现了松耦合原则。facade所面对的往往是多个类或其它程序单元,通过重新组合各类及程序单元,对外提供统一的接口,以便维护管理,减少复杂度和依赖性。 facade外观模式有点像数据库中视图的味道。在数据库中的视图对n个表的组合,客户端程序通过访问数据库的视图,而不必直接访问表,这样就减少了sql语句的编写,也可以减少很多代码量。如果数据的表万一有所改动,一般修改对应的视图就行了, ...
flyweight享元模式是实现对象的共享,减少重复数据的存储,从而减少内存分配的开销。享元模式融合了工厂模式和单例模式的思想,实际上也可以说享元模式是特殊的工厂模式。 如果要创建同个对象的n个实例,而通常这n个实例中的m个属性的值大部分或全部是相同的,那么最坏的情况就会有n*m个相同的数据占据了不同的内存空间,如果n*m的值较大的话,就可以考虑flyweight享元模式了。享元模式就把这m个相同的属性提取出来,结合单例模式和工厂模式,来实现相同属性值的实例分配 ...
composite合成模式可以使用户对象以同样的方式对待单独的对象或复合的对象,合成模式要设计一个公共接口,即可提供给单独的对象使用,也可以供给复合对象使用。 使得用户类一致地使用单独的对象或者复合的对象,也不必关系要如何处理复合对象,只需要向复合对象添加单独对象即可。 junit的Test接口的两个子类TestCase和TestSuite就是使用了合成模式。
&n ...
bridge桥接模式的目的和decorator装饰器模式是一样的,都是避免过多的子类,只是它们的实现的方法有所不同,桥接模式采用聚合的方式来实现。要对类的功能进行扩展,可以修改现有的代码来做,但是如果一个父类的n个子类都要该功能,那么就得修改n次,不但工作量大而且重复代码量很多。这也违反了面向对象的开放/封闭原则(对扩展来说是开放的,对修改来说是封闭的)。在前面的《decorator装饰器模式》中提到的“父类的n个子类的都要派生出子类并实现这些功能”,这种方来处理但然也是不合理的。 &nb ...
decorator装饰器模式,动态地扩展一个对象的功能,而不需要改变原始的类代码或使用继承。是通过创建一个跟目的类同一等级(继承目的类的父类)的称为装饰器的封装对象来实现的。要新添加的功能类继承这个装饰器,这样用户类可以像使用原来的类那样使用新添加的功能类。 decorator装饰器模式可以动态地添加功能,也可以动态地撤销功能。如果一个父类的n个子类,都需要有一个或若干个功能,而它们操作该功能的代码结构基本一致,这个时候就可以考虑使用decorator装饰器模式。如使用继承来实现的话,父类的n个子类的都要派生出子类并实现 ...
adapter适配器模式,目的在于扩展。是在原系统上进行扩展时用到的方法。 adapter适配器模式,个人认为在其名前加两个字,命名为接口适配模式。其用意是在保留原有类的前提下(即不改变原来的代码)把一个类的接口转换另一个接口,这样可以让具有不同接口的(原本接口不匹配的)多个类可以一起工作。而如果没有这样的转换,将不能使用到新的类提供的服务。 适配器可分为类适配器和对象适配器。
两种方式都实现了原接口或继承了原抽象类;在对新类的方法的重写的方式上 ...
prototype原型模式,简单明了的讲是,克隆并复用原型对象模式。 当客户机需要创建对象集时,其中对象是相似的,或仅在状态方面有所不同,并且创建此类对象将花费很多的时间,所涉及的处理也较多。比如,通过复制具有类似结构代码,并进行修改,来创建一个新的实例,这时可以考虑采用原型模式,这样就不必通过复制修改代码来实现新的实例,只要克隆一下另一个实例,通过修改相应的属性的值来到达你的目的。 克隆有浅克隆和深克隆。
class Person implements Cloneable {
...
builder构造模式,简单明了的讲就是一个对象(或者说是一个部件)实例化过程的提取模式。目的在于方便维护和扩展。 如果要创建的对象是复杂的,而且组成对象创建工程的一系列步骤可以按不同的方式来生成不同的对象,这是就应该要考虑使用构造模式,否则你把构造的所有的过程都放在一个对象里面,代码可能会变得很臃肿,这时应该把系统模块化。允许创建复杂的对象,可以只提供要创建的对象类型的相关信息,并且使有关对象创建的详细信息对客户机保持透明,这种方式方式允许相同的过程生成不同的对象。 在jdon里面讲的设计模式之Builder的例子(h ...
singleton单例设计模式,目的在于类之间的信息共享。 singleton单例设计模式也是相当容易理解的模式之一。就是在整个系统中,只有一个实例。更确切的讲,应该是让jvm一旦为某对象创建了一个引用,就不会在创建的一种模式。举一个在本人的项目中比较典型的例子,就是用户在某个类中就行了一些信息处理,接着用户可能会频繁的使用到这些处理后的信息而且这些信息占用的空间较小,那么就应该把这些信息保存在一个单例中。 sin ...
factory工厂设计模式,目的在于方便系统扩展。 这是设计模式里面最容易理解的模式之一。工厂就是可以生产东西的地方,然而一个工厂也是限定生产成品的,例如生产鞋子和袜子的工厂,你只能定鞋子和袜子的货。for example,在我的一个项目里面,有这样的功能,就是多格式文件处理,并获取一定信息,由于各种格式的文件的格式不同,所以读取方式不同,就要对应的类进行读取。我是这样处理的,根据传进来的文件名,判断其文件的后缀,然后在工厂类中获取一个对应的读取类的实例。 我的代码大概架 ...
- 浏览: 2422 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
POI读取EXCEL文件的错误 ...
用程序做转换,暂时还不知道
-- by linbzh -
POI读取EXCEL文件的错误 ...
那么该怎么用程序来实现这个转换呢?我也碰到这样的问题...
-- by computerceo -
finally里的return与java ...
infile()函数的异常在只在infile()函数捕抓,而抛出的异常throw ...
-- by gaoran2008 -
struts的ActionForm的一个 ...
struts.do?type=all---你的URL都是这样的,也就是说你的ty ...
-- by gaoran2008 -
finally里的return与java ...
这是语法规则,不是缺陷
-- by jsyx






评论排行榜