随笔分类 -  设计模式

摘要:一、动态代理的使用 动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。 动态代理主要包含以下角色: 动态代理类(以下简称为代理类)是一个实现在创建类时在运行时指定的接口列表的类,该类具有下面描述的行为。 代理接口 是代理类实现的一个接口。 代理实例 是代理类的一个实例。 每个代理实例都有一个关联的调用处理程序 对象,它可以实现接口 InvocationHandler。... 阅读全文
posted @ 2013-05-21 15:38 残剑_ 阅读(6886) 评论(0) 推荐(2) 编辑
摘要:今天放假,又有时间继续啃《java设计模式》这本书了。每次学会一种设计模式内心都会有一种小小的成就感,但是懂是懂了,不知道会不会用。主要是现在没有什么项目经验,设计模式学了也派不上用场。不管怎样,学了总比没学好,以后总会派上用场的。 首先,何为观察者模式?观察者模式是关于多个对象想知道一个对象中数据的变化的情况一种模式。比如说现在几乎所有的高校附近都会有大学生兼职中心,也就是兼职中介吧(大一大二的时候还去过,加会员还交了100大洋呢。),兼职中心每天都会把兼职信息通知给所有的会员。这就是一个观察者模式,这里会员也就是观察者,兼职中心就是被观察者,也称作主题。 观察者模式结构中包括四种角... 阅读全文
posted @ 2013-04-20 20:11 残剑_ 阅读(2438) 评论(3) 推荐(2) 编辑
摘要:在许多设计中,经常设计一个对象请求另一个对象执行某一个操作。如果请求者无法或者不希望直接和被请求者打交道,即请求对象无法或者不希望含有被请求者的引用,那么可以使用命令模式。命令模式里称提出请求的对象为请求者,被请求者的对象为接收者。在命令模式中,当一个对象请求另一个对象调用其方法时,不和被请求者直接打交道,而是把这种“请求”封装到一个“命令”对象中,封装的手段将“请求”封装到“命令”对象的一个方法中。命令模式的核心就是使用命令对象来封装方法调用。 例如,在军队作战时,指挥官要命令三连偷袭敌人。但是指挥官这时无法或者不希望和三连直接取得联系,那么指挥官可以发出一个命令,把该命令的执行者设置... 阅读全文
posted @ 2013-04-15 20:41 残剑_ 阅读(1905) 评论(3) 推荐(3) 编辑
摘要:迭代器模式遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。 迭代器模式的结构中包括四种角色。 一、集合:一个接口,规定了具体集合需要实现的操作。 二、具体集合:具体集合石实现了集合接口的一个实例,具体的集合按照一定的结构存储对象。具体集合应该有一个方法,该方法返回一个针对该集合的具体迭代器。 三、迭代器:一个接口,规定了遍历具体集合的方法,比如next()方法。 四、具体迭代器:实现了迭代器接口的类的实例。具体迭代器在实现迭代器接口所规定的遍历集合的方法时,比如ne... 阅读全文
posted @ 2013-04-14 20:28 残剑_ 阅读(5791) 评论(1) 推荐(2) 编辑
摘要:spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了。那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后就会对spring的原理有一定的了解。 spring使用BeanFactory来实例化、配置和管理对象,但是它只是一个接口,里面有一个getBean()方法。我们一般都不直接用BeanFactory,而是用它的实现类ApplicationContext,这个类会自动解析我们配置的applicationContext.xml,然后根据我们配置的bean来new对象,将new好的对象放进一个Ma... 阅读全文
posted @ 2013-04-14 00:14 残剑_ 阅读(40088) 评论(3) 推荐(11) 编辑
摘要:在java中,除了对象适配器外,还有一种更常见的适配器,即单接口适配器,单接口适配器可以让用户更加方便的使用该接口。 例如,java.awt.event包中的MouseListener接口一共定义了五个方法:1 void mouseClicked(MouseEvent arg0) {}2 vo... 阅读全文
posted @ 2013-04-12 22:48 残剑_ 阅读(1864) 评论(2) 推荐(1) 编辑
摘要:问题导入:比如有A型螺母和B型螺母,那么用户可以再A型螺母上直接使用按着A型螺母生产的A型螺丝,同样也可以在B型螺母上直接使用按着B型螺母标准生产的B型螺丝。但是由于A型螺母和B型螺母的标准不一样,用户在A型螺母上不能直接使用B型的螺丝,反之也一样。该如何达到这个目的呢? 使用适配器就可以解决这个问题:生产一种“A型螺母适配器”,这种A型螺母适配器的前端符合A型螺母标准要求,可以拧在A型螺母上,后端又焊接了一个B型螺母。这样用户就可以借助A型螺母适配器在A型螺母上使用B型的螺丝了。 适配器模式又称为包装器,是用来将一个类的接口转换成客户希望的另外一个接口。这可以使得原本由于接口不兼容而... 阅读全文
posted @ 2013-04-12 22:07 残剑_ 阅读(17619) 评论(4) 推荐(2) 编辑
摘要:工厂工厂,顾名思义就是生产产品的加工厂。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。 工厂模式在实际应用中用的非常多,比如说大家用的QQ的换皮肤功能,就是应用工厂模式实现的。只要选中某个皮肤,整个界面风格都改变了,包括背景图、按钮、界面风格等。下面我就用工厂模式来实现简单的换皮肤功能。 假如一套皮肤有背景图片、界面和按钮,这些我们叫做抽象产品,比如说背景图片有红色风格背景图片、蓝色风格背景图片,界面也有红色... 阅读全文
posted @ 2013-02-04 17:43 残剑_ 阅读(747) 评论(1) 推荐(1) 编辑