java_设计模式
文章平均质量分 51
z466459262
这个作者很懒,什么都没留下…
展开
-
静态代理~怎么为一个已经实现得方法在前后加逻辑~剖析插头和插座
[code]/** 代理模式语义:有一个类,然后想对这个类进行增强,把一些控制类放入这个类的某个方法的前后,因为是对方法的扩展,所以把方法变成接口实现插拔"///从某种意义上说两种TimeProxy 都是Tank的代理,这两个都是代理的实现//比如一个类Tank,想为这个move前后加些逻辑,方面一:继承,就重写他啊class Tank{ public vo...原创 2010-07-08 16:44:13 · 117 阅读 · 0 评论 -
设计模式------适配器
[code]//适配器模式不适合在系统设计阶段采用,没有一个系统分析师会在做详细设计的时候考虑使用适配器模式,这个模式使用的主要场景是扩展应用,不符合原有设计的时候才考虑通过适配器模式减少代码修改带来的风险//语义:如果有两个相似的类,这两个类已经写好了,但是我有某种需求,想让其中一个类拥有和另外一个类相同的接口,你可以改源代码使得这两个类统一起来,或者使用适配器。。。head fir...原创 2010-08-09 11:07:17 · 101 阅读 · 0 评论 -
概念-----好莱坞原则
好莱坞,一个让许多俊男靓女欲罢不能的地方。在通往成功的路上,有谁不愿意通过捷径而一炮而红,在这之中影视声色是许多人会尝试的方式之一。不过,好莱坞不是一般的场所,它不是什么阿猫阿狗都可以进入的地方,他们不缺少俊男靓女。因此,如果你有一双俊俏的脸庞,你不要在他们面前显摆,他们不在乎。你可能会说,我的演技非常棒,哦,没用,这样的人在好莱坞遍地都是。梦想进入好莱坞的人们,你们不要找好莱坞。...原创 2010-08-09 13:29:20 · 209 阅读 · 0 评论 -
概念-----依赖倒置
[code]依赖如果不导致,就是我依赖一个具体的东西。。。这是很正常的思维倒置是什么呢? 具体的东西给倒置一下就是不具体的东西,所以这个原则的意思是说 要针对接口编程不要针对实现编程。。。。[/code]...原创 2010-08-09 13:45:38 · 72 阅读 · 0 评论 -
设计模式------组合模式
[code]这个标题说的是一种模式。。。又叫~~树模式~~整体部分模式这个模式是为了同一树中的叶子节点和非叶子节点。。。组合模式场景:1。买电脑的商家,可以卖单独配件也可以卖组装整机。2。复制文件,可以一个一个文件复制黏贴还可以整个文件夹进行复制。3。再比如文件编辑,可以给单个字加粗,变色,改字体,也可以给整段文件做同样的操作。组合模式使得用户对单个对象和组合对...原创 2010-08-09 14:28:19 · 112 阅读 · 0 评论 -
题目---银行帐户管理系统
[code]//注意:不用if else语句的前提是状态的流动按照一定的规律来运作,就像head first里面的糖果机,状态1:没25分钱 ----投入25分(动作)--->状态2:有25分钱,这些状态之间可以根据逻辑来判断。。。但是如果状态的流动是根据随机或者人的意愿的话,那么if/else语句不可避免下面题目是CSDN上面抄过来的。。。。一个假象的银行帐户管理系统...原创 2010-08-10 13:54:24 · 505 阅读 · 0 评论 -
责任链模式_过滤器模式
[code]//责任链---要么承担责任作出响应,要么向下传递请求。//责任链模式屏蔽了请求的处理过程,你发起一个请求到底是谁处理的,这个你不用关心,只要你把请求抛给责任链的第一个处理者,最终会返回一个处理结果(当然也可以不做任何处理),作为请求者可以不用知道到底是需要谁来处理的,这是责任链模式的核心缺点: 调试有点小不爽public class Main { pu...原创 2010-06-30 15:00:11 · 263 阅读 · 0 评论 -
抽象类和接口的设计原则
一般情况下: 如果有这么一个东西,那么就设计成为抽象类,他首先是一个类 如果是事物的一些特性,那么就设计成为接口,比如说:可以飞的(Runnable), ...原创 2010-07-03 11:43:20 · 129 阅读 · 0 评论 -
题目---牛生牛---面向对象
[code]农场一头小母牛,每年生头小母牛。母牛五岁产母牛,二十年上多少牛?/** * 一群牛的故事 */import java.util.ArrayList;import java.util.List;/** * 母牛 * @author dinghun8leech */class Cow { /** age 年龄 */ ...原创 2010-07-03 13:00:35 · 205 阅读 · 0 评论 -
实现一个接口,和组合一个接口的区别
[code]/* 从代码可以看出来,第一种写法,A被绑定了特定的BBB实现 而第二种写法,A中的BBB实现是可以动态绑定的。*/Class A implements BBB{ public void BBB_1(){ }}Class A{ BBB b ; public void setBBB(BBB b)...原创 2010-07-03 16:52:01 · 304 阅读 · 0 评论 -
设计模式------访问者模式
[code]访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作,也就是针对访问的对象不同,执行不同的操作把类分成了两个部分,一部分是存储信息的,一部分是展示信息的他和策略模式有相同点哈。。。。但是有那么一点点不同public abstarct class Employee{ ...... public final void report...原创 2010-11-09 23:00:22 · 87 阅读 · 0 评论 -
设计模式-------建造者模式
[code]状态间的自由切换建造者关心的是内部方法的顺序是怎么样的。。。。。他提供一个接口,让别人来制定方法执行的顺序。。。。其实是对方法制定的门面啦。。。public abstract class CarModel{ private List seq = new ArrayList();//顺序类,里面放的是方法名,然后会按照次序来执行这些方法 protec...原创 2010-11-10 20:38:22 · 99 阅读 · 0 评论 -
设计模式-----Singleton单件模式
[code]/* 1:同步一个方法可能造成程序执行效率下降100倍。。。。2.在多任务环境下各任务间共享的标志都应该加上volatile(易变的)修饰,这是告诉JVM这个变量是易变的,每次读取他时请到主存中进行读取,不要到寄存器中读取他在主存中的备份。。因为易变嘛。。。。虽然寄存器中备份读取出来要快很多但这个易变的变量很可能被修改了...*///懒汉式单件,使用双重检查 加锁机...原创 2010-08-09 09:44:57 · 85 阅读 · 0 评论 -
题目----猫叫---设计模式
[code]题目:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 要求:1.要有联动性,老鼠和主人的行为是被动的2.考虑可扩展性,猫的叫声可能引起其他联动效应下面是自己写的:哈哈。设计模式学得还不错。。。。。public class Cat { List hearers = new ArrayList(); public void addObserver...原创 2010-08-06 16:20:19 · 308 阅读 · 0 评论 -
设计模式------装饰器
装饰模式和代理模式的区别: 其实在写法上面试一样的但是装饰器模式是为程序添加新的功能,而代理模式是为了是否调用那个主功能把关的。[code]//装饰模式动态地给一个对象添加一些额外的职责,既然只是装饰,比如一头猪,它打扮得再漂亮也是一头猪,并不能成为一个人,而装饰他的东西呢,如果一个东西要装饰他,比如给猪穿衣服,那么要点1:让他还是一头猪,所以把它包装后对外的接口还是一样的...原创 2010-08-06 16:14:43 · 75 阅读 · 0 评论 -
动态代理~插头是不固定的
[code]/*动态代理和静态代理的区别是: 静态代理之所以静态是知道他要代理的东西是什么,也就是插槽是固定的,他只能接收固定的插座*/class MyConnectionHandler implements InvocationHandler{ private Connection realConnection; private Conne...原创 2010-07-08 18:10:35 · 79 阅读 · 0 评论 -
设计模式------桥模式~bridge
[code]/** 语义:实现系统可能有多个维度的分类,每一种分类都可能变化,那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合 * 按性质划分,按类型划分----两个维度的划分 * 所以说这两个维度会有排列组合---怎么构建子类是个问题,必须避免类爆炸 * 先看传统方法 不用桥接模式的坏处: 如果使用继承,那么子类和父类是紧耦合的,当你需要复用子类时,如果继...原创 2010-07-09 09:01:57 · 103 阅读 · 0 评论 -
设计模式-------命令模式
[code]重点中的重点: 把"执行者"类当中的方法变成多个命令类,这个步骤是把多个完全不同的方法变成一个统一接口,这样可以让命令接收者不用关注类中方法细节。。。厉害,把一个类中方法给统一命名啦。。。我认为命令模式的精髓在于:增加了一个命令的管理者,为了使管理者管理命令更加方便,我们使用适配器模式统一了所有命令的接口,因为有List来接受命令,所以可以有命令队列,因为有remove()...原创 2010-07-09 10:23:57 · 87 阅读 · 0 评论 -
设计模式-----状态模式
[code]/**一个类中的方法是不稳定的,他在不同的状态下需要不同的方法,那么我们就应该把方法剥离出去,随着状态来提供方法。。。MM的状态是不固定的,他在高兴,犹豫,伤心的时候都会说话,吃饭,聊天,但是不同的状态下的吃饭,聊天是不一样的。。。。所以我们得根据不同的状态来调用不同的方法。。。而状态是会扩展的,可能有好多种状态。。。。但是做什么事情不会扩展技术上:因为状态扩展...原创 2010-07-09 11:15:59 · 71 阅读 · 0 评论 -
设计模式-------中介者模式
[code] 语义:类和类之间不要直接打交道,通过一个中间类来打交道,这个中间类就是调停者,也就是中介原来的结构是网状的,这样加入一个中介,把他变成星型结构。。这样让中间这个类变得复杂,让旁边的类变得简单。。。。大家在每个机场都会看到有一个叫做“XX 机场调度中心”,这个是做什么用的呢?就是具体的中介者,调度每一架要降落和起飞的飞机,一架分机(同事类)飞到机场上空了,就询...原创 2010-07-09 11:31:03 · 117 阅读 · 0 评论 -
设计模式--------Facade~~外观模式~~门面
[code]可以看成事对多个方法的封装。。。。。对多个对象的代理。。目的是为了使得接口变简单 如果一个客户要和系统打交道,他发现需要理解系统内部错综复杂的业务逻辑所以我们给这个系统加一个类,来帮助客户完成这些复杂的工作,只是提供一个接口给用户就可以了,这就是外观,那个类也就是对外的一个门面而已,实际中的例子:去政府办事特别麻烦,我们需要了解这其中的很多东西,说明政府没有一个Fac...原创 2010-07-09 11:34:49 · 108 阅读 · 0 评论 -
设计模式------工厂模式
[code]工厂模式是一种创建型模式。。。其中创建型模式包括:单例,工厂,建造者,原型四种 /* 为什么要工厂方法:1.因为我想控制产生交通工具的生产过程2.工厂模式符合OCP原则,也就是开闭原则,3。抽象工厂还有个最大优点,高内聚,低耦合,内聚都高到new的地方都转移到了一个类中来维护工厂的共性是: 能生产多种产品,所以要具体产品类和抽象产品类,当然有一个具体工厂哈...原创 2010-07-09 13:25:16 · 129 阅读 · 0 评论 -
题目-----面向对象设计题
[code]/*面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法 1.人在黑板上画圆 2.列车司机紧急刹车 3.售货员统计收获小票的金额 4.你把门关上了 5。球从一根绳子的一段移动到了另一端*/ 1.对于这个设计,上面有person , blackborad , circle三个对象, 动词 : 画。 因为画的动作的数...原创 2010-07-29 10:38:51 · 161 阅读 · 0 评论 -
设计模式------模板方法模式---桥梁模式
如果两个类的某个方法90%代码一样,怎么重用?把不同的地方,抽出来变成一个方法,然后这两个类是继承关系,然后覆盖那个不同地方的方法就可以了~~~~[code]public abstract class CaffeineBeverage{ final void prepareRecipe(){ boilWater(); //固定的 ...原创 2010-07-31 18:43:47 · 142 阅读 · 0 评论 -
设计模式------策略模式
[code]我认为核心思想是:把变化的方法也当作参数传过来1.语义:策略模式 : 所谓策略就是有不同的方法,不同的方式,或者说是不同的算法,但这些策略可能都是为了实现一种应用,比如公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图,这是两种不同的途径来表达同一个东西,那么可能会根据不同的需要灵活的选择其中的一种来用,所以这两种策略就可以把他们变成接口的实现,用接口就...原创 2010-08-06 14:54:15 · 73 阅读 · 0 评论 -
设计模式------观察者模式
[code]大量参考设计模式之禅观察者---就是间谍哈,或者叫偷窥狂也可以秦国的李斯要监视韩非子的一举一动,怎么办?方法1:派间谍呗,但是间谍得时时刻刻工作才能观察到韩非子的一举一动哈public class HanFeiZi{ //作为监视的判断标准 private boolean isHaveBreakfast = false; //别人要在外面能监...原创 2010-08-06 15:16:00 · 123 阅读 · 0 评论 -
设计模式--------享元模式
[code]Flyweight 是拳击比赛中的特用名词,意思是“特轻量级”,指的是51 公斤级比赛,用到设计模式中是指我们的类要轻量级,粒度要小这才是它要表到的意思,粒度小了,带来的问题就是对象太多,那就是用共享技术来解决。场景:在报考系统中,我们需要填写信息:public class SignInfo { //报名人员的ID private String id...原创 2010-11-15 14:04:53 · 94 阅读 · 0 评论