
读书笔记之设计模式
文章平均质量分 73
pipisky2006
这个作者很懒,什么都没留下…
展开
-
适配器模式和外观模式
1。适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原来的接口不兼容的类可以合作无间。 2.构造适配器的关键:实现了目标接口,并持有被适配者的实例。 而适配器使用的方法是:客户通过目标接口调用适配器的方法对适配器发出请求,转载 2011-08-11 23:41:19 · 1243 阅读 · 0 评论 -
命令模式(封装调用)
我们将把封装带到一个全新的境界:把方法调用(method invocation)封装起来。命令模式可将“动作的请求者” 从 “动作的执行者”中解耦。在设计中采用“命令对象”,利用命令对象,把请求(例如打开电灯)封装成一个特定的对象(例如客厅电灯对象)。所以,每个按钮都存储一个命令对象,那么当按钮被按下的时候,就可以请命令对象做相关的工作。遥控器并不知道工作内容是什么,只要有个命令对象能和正确的原创 2011-09-04 23:46:55 · 2431 阅读 · 0 评论 -
工厂模式
利用静态方法可以定义一个简单的工厂,这是很常见的技巧,常被成为静态工厂。为何使用静态方法,因为不需要创建对象的方法来实例化对象。但请记住,这也有缺点,不能通过继承来改变创建方法的行为。简单工厂其实不是一个设计模式,范围比较像一种编程习惯。但由于经常被使用,所以我们给它一个“荣誉奖”。public class PizzaStore{ SimplePizzafactory factory;原创 2011-09-12 07:25:34 · 499 阅读 · 0 评论 -
代理模式(控制对象访问)
代理要做的,控制和管理访问。代理模式的定义:代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。使用代理模式创建代表(representative)对象,让代表对象控制某对象的访问,被代理的对象可以使远程的对象,创建开销大的对象或需要安全控制的对象。类图:首先是Subject,它为RealSubject和Proxy提供了接口。通过实现同一接口,Pro原创 2012-02-26 20:45:52 · 1139 阅读 · 0 评论 -
JavaRMI(远程代理)
远程代理:远程代理就好比“远程对象的本地代表”。所谓远程对象,是一种对象,活在不同的java虚拟机堆中(更一般的说法是,在不同的地址空间运行的远程对象)。所谓的本地代表,是一种可以由本地方法调用的对象,其行为会转发到远程对象中。1、RMI定义和功能RMI是Remote Method Invocation的简称,是J2SE的一部分,能够让程序员开发出基于Java的分布式应用。一个转载 2012-02-26 22:39:11 · 5309 阅读 · 1 评论 -
迭代器模式和组合模式(管理良好的集合)
关于迭代器模式比较简单,先看定义,提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的的表示。两个意义,1,迭代器让我们能游走于聚合对象内的每一个元素,而又不暴露其内部的表示(数据结构)。2,把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。找了张比较近似的类图,上面的类图中可以看出,我们定义了两个抽象类,一个是转载 2011-11-24 00:07:07 · 960 阅读 · 0 评论 -
单件模式(独一无二的对象)
单件模式确保一个类只有一个实例,并提供一个全局访问点。全局变量缺点,急切实例化VS延迟实例化。另外一个,全局变量可以提供全局访问,但是不能确保只有一个实例。单例改善多线程1,使用“急切”创建实例,而不用延迟实例化的做法(和类的静态变量差不多)如果应用程序总是创建并使用单件实例,或者在创建和运行时方面的负担不太繁重:public class Singleton {原创 2011-11-29 22:41:26 · 528 阅读 · 0 评论 -
装饰者模式
利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。通过动态地组合对象,可以写新的代码添加新功能,而无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机会将大幅度减少。设计原则类应该对扩展开发,对修改关闭。装饰者模式动态地将责任附加到对象上。若需要原创 2012-02-03 18:21:27 · 2897 阅读 · 5 评论 -
观察者模式
出版社+订阅者=观察者模式观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。我们来看一下观察者模式的类图:其中的依赖是如何产生的:因为主题是真正拥有数据的人,观察者是主题的依赖者,在数据变化的时候更新,这样比起让许多对象控制同一份数据来,可以得到更干净的oo设计。松耦合的威力当两个对象之间松耦合,它们依然原创 2012-01-31 23:38:52 · 1888 阅读 · 0 评论 -
策略模式
对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类先看看涉及的设计原则1,找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。这个概念很简单,几乎是每个设计模式背后的精神所在。所有的模式都提供了一套方法让“系统中的某部分改变不会影响其他部分”。2,针对接口(超类型)编程,而不是针对实现编程。"针对实现编程"Dog d原创 2011-12-05 23:43:16 · 590 阅读 · 0 评论 -
状态模式(事物的状态)
基本常识:策略模式和状态模式是双胞胎,在出生的时候才分开。策略模式时围绕可以互换的算法来创建成功业务的。然而,状态走的是更崇高的一条路,它通过改变对象内部的状态来帮助对象控制自己的行为。一个通用的技巧:通过对对象内部的状态建模------通过创建一个实例变量来持有状态值,并在方法内书写条件代码来处理不同的状态。具体的操作流程:1,首先,找出所有的状态。不画图了,用()代替圆原创 2011-12-04 11:32:52 · 1099 阅读 · 0 评论 -
模板方法模式(封装算法)
哎,在需要进入这个洞之前他原本是个好老板的,结构这“全部”都变成“我的”工作了。你懂我的意思吧?他根本就不见人影。书中通过泡咖啡和泡茶的例子,我们已经明白两种冲泡法是基本相同的,只是一些步骤需要不同的实现。所以我们泛化了冲泡法,把它放在基类。一些步骤依赖子类进行。 认识模板方法 abstract class CaffeineBeverage{ //模板方法,定义步骤原创 2011-11-27 23:42:25 · 809 阅读 · 0 评论 -
命令模式下的异步消息处理(Handler,Message,Looper,Thread)
不熟悉命令模式可以先读读http://blog.youkuaiyun.com/pipisky2006/article/details/6748226,下文中如果图片不能完全展示可以在新标签页打开图片。下面的是标准的命令模式的类图。接受者:Handler,执行消息处理操作。请求者:Looper,调用消息的的处理方法。命令角色:Message,消息类原创 2013-01-14 00:42:11 · 4437 阅读 · 0 评论