摘要: 一.初次见面 曾几何时我们已经忘记了Java赠送给开发者的这块"糖"--内部类。谈起内部类大家都会先停顿一下,然后才恍然大悟。"噢...对对对,某某某时我用过内部类"。好东西我们总是顺其自然的拿起来就用。今天带大家来回顾一下InnerClass的相关知识。曾几何时我也用过Java内部类:View Code package innerclass;import java.util.ArrayList;import java.util.List;//测试内部类的初始化和外围类之间的通信public class Box { private String name 阅读全文
posted @ 2012-03-19 17:26 focusJ 阅读(1598) 评论(0) 推荐(4) 编辑
摘要: 一.类图二.意图为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。三.适用性a)当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。b)客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系 阅读全文
posted @ 2012-03-19 17:06 focusJ 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 一.类图二.意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。三.适用性a)当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用b)当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。c)当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不希望这些对象是紧密耦合的。四.实例乡村爱情第五部中大脑袋为大拿出了一个主意,当杨总来的时候保安拦住杨总,同时通知王大拿。这细节就不细说了,如果想看的上网看就行了。这是一个典型的Observer设计模式。pa 阅读全文
posted @ 2012-03-19 17:05 focusJ 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 一.类图二.意图为其他对象提供一种代理以控制对这个对象的访问。三.适用性a)在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一些可以使用Proxy模式常见情况:1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。2.虚代理(VirtualProxy)根据需要创建开销很大的对象。在动机一节描述的ImageProxy就是这样一种代理的例子。3.保护代理(ProtectionProxy)控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作 阅读全文
posted @ 2012-03-19 17:02 focusJ 阅读(2828) 评论(0) 推荐(0) 编辑
摘要: 一.类图二.意图定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。三.适用性a)许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。b)需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时[HO87],可以使用策略模式。c)算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。d)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这 阅读全文
posted @ 2012-03-19 17:00 focusJ 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 一.类图二.意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。三.适用性a)一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。b)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。c)控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。四.实例模板模式我想用的最多的就是在DAO模式中。通常我们会编写好多的DAO类,这时我们的做法是将这些DAO中的共有方法抽象到一个AbstractDAO中,直接好处就是节省代码。代码不列举,不知道的朋友 阅读全文
posted @ 2012-03-19 16:58 focusJ 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 一.类图类适配器:对象适配器:二.意图将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。三.适用性a)你想使用一个已经存在的类,而它的接口不符合你的需求。b)你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。c)(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。四.实例随着西方文化在中国的盛行,外国的饮食也受到人们的追捧。KFC、麦当劳在中国可谓是遍地开花。但是一些上了年纪的人总是吃 阅读全文
posted @ 2012-03-19 16:57 focusJ 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 一.类图 二.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 三.适用性 a)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 b)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 四.实现方式 1.懒汉模式package explore.singleton;//懒汉模式//直到第一次调用的时候再初始化public class Singleton1 { private static Singleton1 instance = null; private Singleton1() { } ... 阅读全文
posted @ 2012-03-19 16:54 focusJ 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 一.类图 二.意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 三.适用性 a)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 b)当构造过程必须允许被构造的对象有不同的表示时。 四.实例 首先声明我是一个技术男,所以我在学校做过不少项目。有自己独立完成的,也有和别人合作完成的大项目。一天我们Java小分队接了一个大项目,经过一番讨论之后技术选型是这样的:SSH+MySQL。但是团队中之后组长精通Spring。无奈只有等组长封装好底层接口后我们再进行各自模块的开发,然后把各模块交给组长,组长各模块的集成。package e... 阅读全文
posted @ 2012-03-19 16:53 focusJ 阅读(195) 评论(0) 推荐(0) 编辑