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

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

2011年1月6日

摘要: 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 老男孩咖啡 阅读(251) 评论(0) 推荐(0) 编辑

摘要: 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 老男孩咖啡 阅读(220) 评论(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 老男孩咖啡 阅读(200) 评论(0) 推荐(0) 编辑

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

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

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