java设计模式
文章平均质量分 70
haizi8888
这个作者很懒,什么都没留下…
展开
-
java策略模式
1:定义:在《head first Design Pattern》中的定义是:策略模式定义了算法族,分别分装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。2:设计原则1) 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2) 针对接口编程,而不是针对实现编程。3) 多用组合,少用继承。3策略模式的编写步原创 2014-02-26 22:13:47 · 697 阅读 · 1 评论 -
组合模式
组合模式其实跟数据结构中的树结构类似,在C语言中树的每一个节点都是NODE,有些node是节点有些是树叶;组合模式也比较类似,有组合对象和个别对象;定义:组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。类图如下所示:Component:可以是一个接口也可以是一个抽象类,如果需要一些默认的操作则可以定义为抽原创 2014-03-10 10:26:14 · 550 阅读 · 0 评论 -
适配器模式
顾名思义,适配器好比两头的插头想插入到三头的插座上必须要有转换器,也就是这个适配器;也就是说类Duck,不修改类本身的任何代码,可以经过适配器,称为类似Chicken类,就是说能将接口转换成另一个接口;定义:适配器模式,将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。(有类适配器和对象适配器)类适配器模式:代码:class Duck{原创 2014-03-09 00:50:35 · 521 阅读 · 0 评论 -
迭代器模式
我最早接触的设计模式就是迭代器模式了哈;为什么要有迭代器模式呢?看下下面的代码就知道了哈://对于一个数组对象sz;我们要怎么遍历呢? public void bianlisz(){ for(int i=0;i<sz.length;i++){ //对每个sz[i]访问 } } //对于一个ArrayList的类对象al;我们要怎么遍历呢? public void bian原创 2014-03-09 14:45:06 · 417 阅读 · 0 评论 -
命令模式
命令模式就是通过封装方法调用,把运算块包装成形。调用此运算的对象不需要关心事情是如何进行的,只要知道如何使用包装成型的方法就可以了;定义:将“请求”封装成对象,以为使用不同的额请求、队列或者日志来参数化其他对象。 下面讲解下遥控器的设计,以下是遥控器的基本模型:左边是插槽,每个插槽都有对应的执行对象,右边是on和off开关原创 2014-03-08 23:40:34 · 467 阅读 · 0 评论 -
外观模式
外观模式和适配器模式都是改变接口,而外观模式改变接口的原因是为了简化接口;(为什么要叫外观模式,提供了一个干净的外观);外观没有增加新增的功能,而是附加“聪明的”功能。类图如下所示:代码:(比较简单,就用网上别人的代码)package facade; class DrawerOne { public void open(){ S原创 2014-03-09 01:29:20 · 494 阅读 · 0 评论 -
模板方法模式
在了解模板方法模式之前,先看下例子,容易理解:1, 咖啡冲泡法:1) 把水煮沸2) 用沸水冲泡咖啡3) 把咖啡倒进杯子4) 加糖和牛奶2, 茶冲泡法:1) 把水煮沸2) 用沸水浸泡茶叶3) 把茶倒进杯子4) 加柠檬以上两种方法,1,3都是同样的操作方法,2,4不一样;所以可以设计一个抽象的父类,在方法prepare()中1,3原创 2014-03-09 02:45:27 · 514 阅读 · 0 评论 -
状态模式
状态模式和策略模式很像,我们已经知道策略模式是将不变的与变化的分开,让变化的行为形成“算法族”。状态模式有类似的地方,他将各种状态形成“算法族”,通过改变对象内部的状态来帮助对象控制自己的行为。 定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改它的类; 利用《head first设计模式》的例子来理解状态模式的妙处;例子:有一个糖果机,投原创 2014-03-11 14:06:14 · 442 阅读 · 0 评论 -
java单件模式
单件模式:就是一个类只有一个实例,并提供一个全局访问点。单件模式浅显易懂,一般的实现形式如下所示:public class Earth { private static Earth uniEarth; public static Earth getInstance(){ if(uniEarth == null){ uniEarth = new Earth(); } ret原创 2014-03-04 21:11:06 · 796 阅读 · 0 评论 -
抽象工厂模式
为了方便引进抽象工厂模式,引进一个新概念:产品族。产品族,是指同个工厂生产的不同产品等级结构的产品组成的家族。如图:图中,一行共有三个不同的产品,它们属于同一个产品族,总共有三个产品族,同一列具有相同的产品等级结构;(也就是说同样的颜色是同一个产品族,同一形状具有相同的产品等级结构)抽象工厂模式是指一个工厂可以创建出分属于不同产品等级结构的一个产品族中的所有对象。(具体的一个工原创 2014-03-04 10:17:08 · 548 阅读 · 0 评论 -
java工厂方法模式
工厂方法模式:定义了一个创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 设计原则:要依赖抽象,不要依赖具体类; 在熟悉工厂模式前,先了解下简单工厂,因为往往把这种编程方法误以为是“工厂模式”;《head first 设计模式》中的Pizza店卖pizza的设计,如下所示:具体的代码如下:(因为比较简单就不废话了)class原创 2014-02-28 22:43:27 · 437 阅读 · 0 评论 -
java观察者模式
举个例子:出版社订阅报纸就是观察者模式;1, 出版者一旦有新的报纸,就必须发送给订阅了报纸的对象;2, 已订阅的人可以取消订阅报纸,同时不会再接收到报纸;3, 任何人可以申请订阅报纸,申请后就会收到报纸;观察者模式:定义了对象之间的一(出版社)对多(订报者)依赖,这样依赖,当一个对象(出版社来报纸了)改变状态时,它的所有的依赖者都会收到通知并自动更新;设计原则:1原创 2014-02-27 15:57:49 · 585 阅读 · 0 评论 -
java装饰者模式
装饰者模式定义:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案; 设计原则:类应该对扩展开放,对修改关闭;(目的是:让类容易扩展,在不修改现有代码的情况下,搭配新的行为); 举个例子:地球村住着:学生,医生,警察等类型的人;现在有:鸭子冒,牛仔裤,外套,内衣,鞋子等;现在怎么设计这个类:让人穿上这些‘装饰’,就是说每一个人物对象都有衣服原创 2014-02-27 21:48:52 · 597 阅读 · 0 评论