http://oldboy-bj.taobao.com/

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

2011年1月6日

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=278&extra=page%3D1延续 Proxy模式(一) 的议题,来看看实现代理的两种方式:Static Proxy与Dynamic Proxy。严格来说这是属于模式的实现方式,不过藉由实例可以更了解Proxy模式的应用。先来看个例子,这个例子是记录(log)动作,程式中很常需要为某些动作或事件作下记录,以便在事后检视或是作为除错时的资讯,一个最简单的例子如下: HelloSpeaker.javaimport java.util.logging.*; public class 阅读全文
posted @ 2011-01-06 16:18 老男孩咖啡 阅读(224) 评论(0) 推荐(0)

摘要: http://www.cnblogs.com/www-35java-com/admin/EditPosts.aspx?opt=1其实Chain of Responsibility的概念,即使是一个刚学程式设计的新手也会用到,一个简单的 if...else if ... else 流程控制就有Chain of Responsibility的概念:if(/* 符合请求条件一 */) // 执行请求一 else if(/* 符合请求条件二 */) // 执行请求二 else // 执行预设请求或显示讯息这是从结构化程式设计的观点来看Chain of Responsibility的概念,若使用物件的观 阅读全文
posted @ 2011-01-06 16:18 老男孩咖啡 阅读(268) 评论(0) 推荐(0)

摘要: http://www.cnblogs.com/www-35java-com/admin/EditPosts.aspx?opt=1如果您写过Java的Swing视窗程式,您可能使用过Command模式了,例如在您按下JMenuItem的“剪下”选项时,执行对JTextArea的选定文字之剪下动作,并将状态列设定为文件已修改状态。在设计Swing时,设计人员是不可能知道使用Swing类别的人,在某个事件发生后所要执行的动作是什么的,他们采用了Command模式,以上面的需求作为例子,一个实作的片段可能像是这个样子:menuCut.addActionListener( new ActionListe 阅读全文
posted @ 2011-01-06 16:17 老男孩咖啡 阅读(211) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=283&extra=page%3D1Mediator的意思是中介者、调节者、传递物,顾名思义,这个模式在程式中必然负担一个中介、调节、传递的工作。物件导向设计中,每个物件所负担的工作尽可能的简单明了,鼓励物件将工作分布至其它物件上,让一群工作属性相同的物件得以共同合作,即所谓高聚合性,以增加物件的可重用性。然而在组织物件工作的同时,物件彼此之间可能知道彼此的存在,并相互依赖,这就使得物件之间的耦合性相对的提高,最差的情况下,所有的物件都知道彼此的存在,这又会使得系统的重用性降低。M 阅读全文
posted @ 2011-01-06 16:17 老男孩咖啡 阅读(232) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=284&extra=page%3D1您希望您的程式中具有复原机制,如果您直接在物件中建立复原机制,这会使得物件本身的职责加重,并且使得物件的重用性降低。与其在物件内建立复原机制,不如将复原机制从物件中脱离出来,这个时候您可以使用Memento模式来达成这个功能。Memento模式在Originator中保留一个Memento成员,这个Memento可以包括Originator的成员资讯,在外部的话,Memento可以由一个Caretaker维护,每对Originator作一个动作, 阅读全文
posted @ 2011-01-06 16:16 老男孩咖啡 阅读(209) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=286&extra=page%3D1如果您不了解TCP的连线方式,在看 Gof的书介绍State模式时,大概会看得一头雾水吧!TCP的连线状态图,光是要了解就要花点精神了,它的连线状态很多,用来说明状态模式确实很适合,但不适合教导初学模式的人。 由简单的开始会比较好理解状态模式的作用,先来看一个例子,如果您有一个只能顺时针转动的瓦斯开关,转动一次的状态为off、small fire、medium fire与largefire,您如何在程式中控制状态的变化与行为呢?一个最简单的方式就 阅读全文
posted @ 2011-01-06 16:16 老男孩咖啡 阅读(255) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=287&extra=page%3D1考虑您要设计一个更换各种符号的工具类TextCharChange,您是否会采用这样的方式:public void replace() { switch(getChangeType()) { case RN_TYPE: replaceRN(); break; case N_TYPE: replaceN(); break; case OTHER_TYPE: replaceOTHER(): break; ... } }这么作的缺点是,日后您要增加更 阅读全文
posted @ 2011-01-06 16:15 老男孩咖啡 阅读(201) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=288&extra=page%3D1不要将设计模式想得高不可攀,好像高手才会使用的东西,事实上如果您在下手程式之前,能稍稍对程式作个分析规划,或多或少都会用到一些模式了,模式不是教条,它只是前人的经验成果,而 Gof 的书则是择前人之精华持续改进而来罢了。Template Method模式就是一个很简单的模式,但可能是使用最广泛的模式,也许您也一直在使用这样的模式,看它的 UML 类别结构图就知道了:仅仅是抽象类别与具体类别实作的关系而已,有些人常问抽象类别与介面的区别为何,Tem 阅读全文
posted @ 2011-01-06 16:14 老男孩咖啡 阅读(142) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=289&extra=page%3D1在Java中所有的物件都继承自Object物件,这样作的优点之一,就是使得一些集合物件的资料结构容易管理,例如您可以将任何型态的物件放入Vector中。然而现在有个问题是,如果您的集合(connection)物件中不仅储存一种型态的物件,如果想要对这些物件作出一些个别化的操作,首要条件就是要知道该物件的型态,使用 instanceof 似乎是个不错的方式,在程式简单的情况下,也许您会这么作:public class ElementA { // s 阅读全文
posted @ 2011-01-06 16:13 老男孩咖啡 阅读(175) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=290&extra=page%3D1考虑这么一个伺服器,它可以处理来自多个客户端的服务请求(Request),为了不丢失客户的请求,它要维持一个缓冲区,客户的请求会先储存至缓冲区中,而伺服器会从缓冲区中取出请求并执行,如果缓冲区中没有请求,则伺服器就等待,直到被通知有新的请求存入缓冲区中,伺服器再度进行请求的执行。关于这个描述的一个简单 UML 顺序图如下所示: 首先要考虑到,缓冲区会同时被两个以上的执行绪进行存取,即伺服器的请求处理执行绪与客户端执行绪,所以必须对缓冲区进行防护。 阅读全文
posted @ 2011-01-06 16:12 老男孩咖啡 阅读(121) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=291&extra=page%3D1Producer Consumer模式与 Guarded Suspension 模式是类似的,只不过Guarded Suspension模式并不限制缓冲区的长度,ProducerConsumer模式假设所生产的产品放置在一个长度有限制的缓冲区(就像是一个产品桌,它可以摆放的空间是有限的),如果缓冲区满了,则生产者必须停止继续将产品放到缓冲区中,直到消费者取走了产品而有了空间,而如果缓冲区中没有产品,当然消费者必须等待,直到有新的产品放到缓冲区中。 阅读全文
posted @ 2011-01-06 16:12 老男孩咖啡 阅读(292) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=292&extra=page%3D1Worker Thread模式在Request的管理上像是 Producer Consumer 模式,在Request的行为上像是 Command 模式。Producer Consumer模式专注于Product的生产与消费,至于Product被消费时是作何处理,则不在它的讨论范围之中。 如果您的Product是一个Request,消费者取得Request之后,执行Request中指定的请求方法,也就是使用Command模式,并且您的Reques 阅读全文
posted @ 2011-01-06 16:11 老男孩咖啡 阅读(168) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=294&extra=page%3D1Future模式可以简单的看成是 Proxy 模式 与 Thread-Per-Message 模式的结合,在Proxy模式中,用一个Proxy来代替真正的目标(Subject)生成,目标的生成可能是费时的,例如在开启一个内嵌图片的文件中,希望程式能尽快完成开启文件的动作,并显示一个可接受的画面给使用者看,在还不需要看到图片的页面中先使用Proxy代替真正的图片载入,只有在真正需要看到图片时,才由Proxy物件载入真正的图片。考虑这样一个情况,使用 阅读全文
posted @ 2011-01-06 16:10 老男孩咖啡 阅读(158) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=295&extra=page%3D1如果有一个资料档有可能同时间会有许多客户端对它进行读取与写入的动作,则必须注意资料的同步问题,像是两个写入者进行写入时,后一个写入者的资料会有可能将次一个写入者的资料覆盖掉;而有时您希望读取者看到的是最新的资料,如果在读取的时候,有写入者想要对资料进行写入,则最好等待读取者读取完毕,相反的如果在写入时有客户想要读取资料,则最好等待,以确保读出来的资料是最新的资料。读取写入的同步问题向来是难解的问题之一,有几个可行的作法,例如若有写入的动作时,则读 阅读全文
posted @ 2011-01-06 16:10 老男孩咖啡 阅读(119) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=296&extra=page%3D1Two-phaseTermination直译的话是“两相终止”,不过就这个模式而言,该译作“两阶段终止”比较适当,想像您有一个执行绪正在周期性的运作,在“运作阶段”您送出了停止执行绪的请求,这时候执行绪不该慌张的马上终止目前的工作,而是先完成这一次周期的工作,然后进入“善后阶段”完成一些善后的工作,例如关闭档案或网路串流,所谓的两阶段终止,即中止“运作阶段”,并完成“善后阶段”,完整的完成执行绪的工作。以Java的Thread终止而言,不建议您直 阅读全文
posted @ 2011-01-06 16:09 老男孩咖啡 阅读(137) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=297&extra=page%3D1无论如何,要编写一个多执行绪安全(thread-safe)的程式总是困难的,为了使用的共用资源,您必须小心的对共用资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意物件的锁定与释放,避免产生死结,种种因素都使得编写多执行绪程式变得困难。Thread-SpecificStorage模式尝试从另一个角度来解释多执行绪共用资源的问题,其思考点很简单,即然共用资源这么困难,那么就干脆不要共用,何不为每个执行绪创造一个资源的复本, 阅读全文
posted @ 2011-01-06 16:09 老男孩咖啡 阅读(163) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=258&extra=page%3D2问题的提出 以前做一个界面的时候常常会遇到这样的尴尬情况:希望保留各个独立的组件(类),但又希望它们之间能够相互通信。譬如Windows中的Explorer,我们希望鼠标点击左边是树型目录的一个节点,右边的文件浏览能及时列出该节点目录下的文件和子目录,类似这样一个简单的应用,如果只有一个类继承JFrame,而树型组件和浏览文件的面板作为成员,就像: publicclass MainFrame extends JFrame  {  JPanel t 阅读全文
posted @ 2011-01-06 16:07 老男孩咖啡 阅读(256) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=259&extra=page%3D2可能你已经在用Decorator模式了,但是跟所有其他模式一样,知道你为什么使用它,学习使用它跟别的开发者沟通是很重要的。 Decorator模式,即Wrapper模式,其强制控制作用是在不改动一个类的代码或者不破坏一个类的接口的情况下为该类添加功能。当你想一个类具有更多功能的时候,使用Decorator模式意味着增加功能后的版本不一定要通过扩展类来重用现有功能。 假定有一个叫做Action的接口有两个方法,act1()、act2()。这个接口有 阅读全文
posted @ 2011-01-06 16:06 老男孩咖啡 阅读(104) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=260&extra=page%3D2JDBC技术是Java语言中数据库编程的标准,近年来随着B/S应用的广泛兴起,Java技术在目前的服务器端越来越受重用。作为信息系统中关键的一部分,数据库编程是编程人员必须掌握的一部分。JDBC技术本身提供了一些可用的编程接口来完成一些基础事务的处理,但我们也发现,如果只是单纯地使用JDBC规范中提供的编程接口来完成事务逻辑的话,代码的冗余度十分高,编程效率也很低。基于此,如果在底层接口的基础之上,运用适当的设计模式进行抽象封装,并加以一些特定的 阅读全文
posted @ 2011-01-06 16:06 老男孩咖啡 阅读(149) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=261&extra=page%3D24.利用Singleton模式来控制连接池对象的惟一性 我们已经有了管理数据库连接的连接池类ConnectionPool,但要注意一点:连接池对象在系统运行时应该是惟一的。原因很简单,如果不惟一的话,对不同的数据库访问产生不同的连接池对象,那么连接池对象的作用就根本没有起。当然,也可以在程序中只创建一个连接池对象,但这不能保证别的程序员也能做到这一点,这时,应该采用singleton模式,通过getInstance()方法获取惟一的连接池对象。 阅读全文
posted @ 2011-01-06 16:05 老男孩咖啡 阅读(160) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=262&extra=page%3D2Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:如上图所示的,MusicBoxDemo代表了客户的角色,它只依赖于IMusicBox介面,而 阅读全文
posted @ 2011-01-06 16:05 老男孩咖啡 阅读(136) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=263&extra=page%3D2假设您要制作一个对话方块(Dialog)元件,您希望的是这个对话方块可以有不同的视感(Look-and- feel),最基本的想法是,藉由Setter将不同视感的元件设定给这个对话方块,例如:CustomDialog.javapublic class CustomDialog { private IButton button; private ITextField textField; public void setButton(IButto 阅读全文
posted @ 2011-01-06 16:04 老男孩咖啡 阅读(129) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=264&extra=page%3D2您想要建立一个迷宫产生程式,迷宫使用二维阵列来定义,0表示道路,1表示墙,2表示宝物,根据所定义的二维迷宫阵列,您想要程式自动产生各种不同材质的迷宫,例如砖墙迷宫,钻石迷宫等等。您可以在程式中定义两个角色,一个是指导迷宫建立的Director角色,一个是按照指导者指示建立迷宫的Builder角色,Director根据定义的迷宫阵列来指导Builder,只要更换Builder,就可以完成不同材质的迷宫。可以使用下面的UML 类别图来表示上述的概念: 阅读全文
posted @ 2011-01-06 16:04 老男孩咖啡 阅读(147) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=266&extra=page%3D2您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆的书,您不可以直接在书中作记号或写字,所以您将当中您所感兴趣的几个主题影印出来,这下子您就可在影印的文章上画记重点。Prototype模式的作用有些类似上面的描述,您在父类别中定义一个clone()方法,而在子类别中重新定义它,当客户端对于所产生的物件有兴趣并想加以利用,而您又不想破坏原来的物件,您可以产生一个物件的复本给它。Prototype具有展示的意味,就像是展览会上的原型车款,当您 阅读全文
posted @ 2011-01-06 16:03 老男孩咖啡 阅读(119) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=265&extra=page%3D2考虑一个状况,您所经营的工厂正在生产一个新的电视机产品,现在有一个问题发生了,您的电视机产品所有的组件都可以自行生产,像是操作面版、电源、摇控装置等等等,但荧幕却必须依赖另一个厂商或子厂商供应,这时您怎么办?您不能将生产进度停下了,相反的您必须确定一些事情,您知道有关于荧幕控制的所有介面,您可以将这些对介面的操作沟通先实现,等到荧幕到了,直接将荧幕与您的半成品组合起来,一个完整的成品即可出厂。FactoryMethod模式在一个抽象类中留下某个创 阅读全文
posted @ 2011-01-06 16:03 老男孩咖啡 阅读(141) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=268&extra=page%3D2考虑使用 Singleton 模式 时拥有子类别的问题,在Singleton模式中的getInstance()通常是一个静态方法,不能在子类别中重新定义它,关于子类别实例的产生交由getInstance()来进行是最好的选择,例如:public class Singleton { private static Singleton instance = null; private Singleton() { // .... } publi 阅读全文
posted @ 2011-01-06 16:02 老男孩咖啡 阅读(190) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=267&extra=page%3D2Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance)。很多时候,您会需要Singleton模式,例如印表机管理,您希望程式中只能有一个PrintSpooler,以避免两个列印动作同时输入至印表机中;例如资料库管理,因为建立连接(Connection)物件会耗用资源,您希望程式中只能有一个连接物件,所有其它的程式都透过这个物件来连接资料库,以避免连接物件的重复开启造成资源的耗用; 阅读全文
posted @ 2011-01-06 16:02 老男孩咖啡 阅读(157) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=269&extra=page%3D2在Java中如果要定义事件处理的方式,必须实作EventListener的子介面,例如实作 WindowListener来定义一些视窗事件的处理方式,WindowListener中定义了七个方法:public interface WindowListener extends EventListener { public void windowOpened(WindowEvent e); public void windowClosing(Wi 阅读全文
posted @ 2011-01-06 16:01 老男孩咖啡 阅读(163) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=271&extra=page%3D2Adapter模式的另一种作法是Class Adapter模式,在这个模式下,Adapter直接继承Adaptee(要引进的新类别),以拥有当中的成员及方法,在C++中的话可以这么作:C++中可以多重继承,但在Java中不行,所以在Java中若要采用Class Adapter,必须作点修改,一方面继承Adaptee,一方面实作Target的介面:代码的实现是这样的: public class Adapter extends Adaptee imp 阅读全文
posted @ 2011-01-06 16:00 老男孩咖啡 阅读(116) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=270&extra=page%3D2您的电脑是个旧电脑,新的滑鼠都在使用USB接口了,而您的电脑上并没有USB,而只有一个PS2接口,这时您可以使用一个USB转PS2的接头作为转换,这样您的电脑就可以使用新滑鼠了(当然您也可以使用USB扩充卡,意思是相同的)。类似的概念,有时候您想在原来的程式中加入一个外部元件,例如一个类别,但是这个类别与您目前所设计的程式在介面上并不一致,为了让这个外部类与原程式的介面一致,您必须使用一个类别作为中介来配接它们,这时您可以采用Adapter模式。 阅读全文
posted @ 2011-01-06 16:00 老男孩咖啡 阅读(180) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=272&extra=page%3D2在 Gof 的书中指到Bridge模式的目的:“将抽象部份与它的实现部份分离,使它们都可以独立地变化。”这句话写得简短,这边再作进一步的解释,抽象部份指的是行为方面定义,实现方面指的是与特定平台相依的代码实现。一个实际的例子在Gof书中有提到,假设您定义了一个IWindow介面,这个介面只定义一些抽象的绘图行为,而不涉及平台的实作,今天您可以继承这个类来开发适用于X Window的XWindow类,也可以继承这个类来开发适用于WindowsXP系 阅读全文
posted @ 2011-01-06 15:59 老男孩咖啡 阅读(125) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=274&extra=page%3D2在JavaSwing中的JTextArea元件预设并没有卷轴,因为设计人员认为卷轴的功能并不是一定需要的,而决定让程式人员可以动态选择是否增加卷轴功能,卷轴的功能是由JScrollPane元件提供,如果您要加入一个具有卷轴功能的JTextArea,您可以如下进行设计:JTextArea textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea);JSc 阅读全文
posted @ 2011-01-06 15:58 老男孩咖啡 阅读(158) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=273&extra=page%3D2如果以绘图为例的话,一个文字是一个绘图元件,一个线段是一个绘图元件,而一个长方形也是一个绘图元件,这些绘图元件可以组成一个图片,如果将这个图片也视作一个绘图元件,则这么递回绘图下去,就可以组合成一个较大的、复杂的图形元件,这样的目的可以使用Composite模式来解决。对于使用者而言,无论是文字、线段或长方形,甚至是组合后的图片元件,它们都拥有一个共同的行为,使用者基本上并不会感觉出它们之间的操作有任何的不同,您可以拖曳、放大、缩小等等,这些行为 阅读全文
posted @ 2011-01-06 15:58 老男孩咖啡 阅读(111) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=275&extra=page%3D2考虑您要撰写一个WebMail程式,您手上已经有一些已经开发好的元件(Component),像是开发WebMail所需要的SMTP处理类、允许上传附档的FileUpload类,以及Web安全相关的API、其它相关的Package等等。当您拿到一些现成的元件,并打算在您的应用程式中使用它们的话,您不应该直接将这些元件耦合至您的应用程式上,例如:上面的作法会让您的应用程式直接与多个元件耦合,这种作法不但与元件的依赖度高,日后要修改应用程式本身,或是更 阅读全文
posted @ 2011-01-06 15:57 老男孩咖啡 阅读(114) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=277&extra=page%3D2在 Gof 的书中对Proxy模式的目的给定为:为其它的物件提供一种代理,以控制对这个物件的访问。由这句话所延伸出来的意思是,根据您的目的不同,您的代理物件将负有不同的责任,因为产生多种不同的代理情况。根据不同的代理目的,而有不同的代理情况,在Gof中所举的一个例子是VirtualProxy,当中举一个文档中内嵌图片的例子,假设您的图片是在文档分页的后面,一开始您并不用直接载入图片,而使用一个虚代理物件,代替图片被载入,以求开启一个文档的时候,速 阅读全文
posted @ 2011-01-06 15:56 老男孩咖啡 阅读(152) 评论(0) 推荐(0)

摘要: http://www.35java.com/zhibo/forum.php?mod=viewthread&tid=276&extra=page%3D2在 Gof 的书中指出,Flyweight的目的在于运用共享技术,使得一些细粒度的物件可以共享。Flyweight在牛津字典中的解释是"boxer of the lightest class"。意思是特轻量级拳击手?其实应该是取"thelightestclass"这部份的解释,一个特轻量级类别,这个类别所产生的物件可以共用在每一个场合(context),并依场合资讯表现物件外观。在书中所举出的例子是文档编辑器中的字元物件,若每个字元物件会包括字元 阅读全文
posted @ 2011-01-06 15:56 老男孩咖啡 阅读(151) 评论(0) 推荐(0)