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

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

2011年1月5日

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=41&extra=page%3D3给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在*下情况时该模式效果最好:1.该文法简单对于复杂的文法,文法的*层次变得庞大而无法管理。2.效率不是一个关键问题最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式。参与者1.AbstractExpression(抽象表达式)声 阅读全文
posted @ 2011-01-05 19:52 老男孩咖啡 阅读(135) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=40&extra=page%3D3将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的*作。适用性1.抽象出待执行的动作以参数化某对象。2.在不同的时刻指定、排列和执行请求。3.支持取消操作。4.支持修改日志,这样当系统崩溃时,这*修改可以被重做一遍。5.用构建在原语操作上的高层操作构造一个系统。参与者1.Comma*d声明执行操作的接口。2.ConcreteCommand将一个接收者对象绑定于一个动作。调用接收者相应的操作,以实现E 阅读全文
posted @ 2011-01-05 19:52 老男孩咖啡 阅读(109) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=42&extra=page%3D3给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性1.访问一个聚合对象的内容而无需暴露它的内部表示。2.支持对聚合对象的多种遍历。3.为遍历不同的聚合结构提供一*统一的接口(即,支持多态迭代)。参与者1.Iterator迭代器定义访问和遍历元素的接口。2.ConcreteIterator具*迭代器实现迭代器接口。对该聚合遍历时跟踪当前位置。3.Aggregate聚合定义创建相应迭代器*象的接口。4.Con 阅读全文
posted @ 2011-01-05 19:51 老男孩咖啡 阅读(128) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=108&extra=page%3D3引言: 设计模式是经验的文档化。它是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。更通俗的来说,它是一个问题/解决方案对。一旦我们掌握了设计模式,就等于拥有了一支强有力的专家队伍。它甚至能够使面向对象的新手利用前人的经验找出职责明确的类和对象,从而获得优雅的解决方案。由于设计模式也是重构的目标,如果在设计的初期适当地引入设计模式,可以减少重构的工作量。 但是,我们也不能陷入模式的陷阱,为了使用模式而去套模式,那样会陷入形式主义。我们在 阅读全文
posted @ 2011-01-05 19:50 老男孩咖啡 阅读(126) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=107&extra=page%3D3基本概念 Singleton是一种创建性模型,它用来确保只产生一个实例,并提供一个访问它的全局访问点.对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或Socket连接要受到一定的限制,必须保持同一时间只能有一个连接的存在.再举个例子,集合中的set中不能包含重复的元素,添加到set里的对象必须是唯一的,如果重复的值添加到set,它只接受一个实例.JDK中正式运用了Singleton模式来实现 set的这一特性,大家可以查看java.u 阅读全文
posted @ 2011-01-05 19:50 老男孩咖啡 阅读(189) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=109&extra=page%3D3引言 在分层软件体系结构中,服务端程序关注于实现业务逻辑,客户端程序则包含用户界面。服务端程序由客户端程序调用,其请求、响应模式在设计时已经确定,运行时出现问题的概率较小。相反,客户端程序与用户直接交互,虽然有正确规定的操作顺序或模式,但是用户的操作是不可预知的,程序必须处理各种操作错误、加上数据输入有效验证等要求,使得客户端程序的开发成本上升。 因而,一旦有经过充分测试的、甚至是通过验收的用户交互程序GUI,应该尽可能的重用该GUI,以提高软件的可 阅读全文
posted @ 2011-01-05 19:49 老男孩咖啡 阅读(526) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=111&extra=page%3D3在东田纳西州寒冷的一天,我的橡皮艇摇摆不定地停靠在一个十六英尺高的瀑布顶上,这个瀑布名叫州界瀑布(State Line Falls)。这条急流因为经常吞噬小船和人而臭名昭著。从顶上望过去,急流拐角处没有什么危险的迹象,但是我知道。几天以来,我在清醒的每一刻心中都记得旅行指南中对它的描述。五个卡车般大小的石块形成了四道狭缝。我只能在穿过急流的前几秒看到整个瀑布。对于这四道狭缝中的三个来说,您的岳母要穿过去可能会太费力、太危险,它们因此而闻名。急流劈波斩浪地 阅读全文
posted @ 2011-01-05 19:48 老男孩咖啡 阅读(147) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=110&extra=page%3D3控制反转(IoC)和依赖项注入(DI)是两种引起极大关注的模式(参见 参考资料)。它们主要用在所谓的 IoC 容器中,这些容器以其他组件的形式将依赖项注入到一个组件中。然而,这两种模式并未定义这些依赖项组件方法的设计方式。在经典的设计中,这些方法中的值对象或数据传输对象用作方法参数并在需要复杂对象时返回值。 本文向您展示还可以对方法签名使用 IoC,从而使方法与值对象解耦。为此,要把方法签名中的值对象替换成接口。我会介绍该方法的一些应用场景。我经常使用这 阅读全文
posted @ 2011-01-05 19:48 老男孩咖啡 阅读(164) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=140&extra=page%3D3设计模式:design patternjava中有23种设计模式. 一:设计模式是最重要的课程之一,堪称软件界的九阳真经,设计模式是一大套被反复使用,多数人知晓的,经过分类编目的,代码总结,使用设计模式是为了可重用代码.让代码更容易被他人理解,保证代码可靠性。 二:学习设计模式最常见的理由是因为我们可以借其: 1. 复用解决方案----避免重蹈前人的覆辙,从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案. 2. 确定通用术 阅读全文
posted @ 2011-01-05 19:47 老男孩咖啡 阅读(256) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=165&extra=page%3D3下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。 java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputS 阅读全文
posted @ 2011-01-05 19:46 老男孩咖啡 阅读(109) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=164&extra=page%3D3Java常用的设计模式创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDE 阅读全文
posted @ 2011-01-05 19:46 老男孩咖啡 阅读(263) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=202&extra=page%3D3我们应该从这七个方面去了解和掌握设计模式 1、 模式的介绍:名字、别名、摘要以及模式的用意 2、 模式的结构:UML图,java源代码 3、 模式的优势和劣势 4、 模式应用的场景 5、 关于模式的实现理论: 说明模式在java中实现的时候会遇到的问题,以及相应的解决方案 6、 举例 7、 相关的模式 阅读全文
posted @ 2011-01-05 19:45 老男孩咖啡 阅读(124) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=251&extra=page%3D33、 解决过多依赖实现类问题在该例的测试类Test.java中,通过Fruit apple = new Apple();来获得对象,造成了程序过多的依赖实现类,与实现类过度耦合,学习设计模式后,我们可以考虑采用工厂模式来实现,可对代码进行如下改进:增加工厂类FruitGardener.java,该类的工厂方法如下:publicstatic Fruit factory(String fruitType) ...{if (fruitType.equalsIg 阅读全文
posted @ 2011-01-05 19:44 老男孩咖啡 阅读(159) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=250&extra=page%3D3我们在发现问题到解决问题这个过程中,常会发现很多问题是重复出现的,或是某个问题的变体,外在不同,而本质相同,建筑学上如是,软件行业也是,这些问题的本质就是模式。有人说,设计模式并不是初学者能够理解的,当他们的编程经验到了一定程度,便迫切的需要设计模式来完善自己的代码、优雅自己的设计,以及减少重复编码,这句话也是蛮有道理的,以我的亲身经历来说,当刚开始编程时,拿起那本设计模式的书,郁郁寡欢,将该书搁于书架两年后再次捧起,如遇知音。本文以我在以往项目中遇到的 阅读全文
posted @ 2011-01-05 19:44 老男孩咖啡 阅读(197) 评论(0) 推荐(0) 编辑

摘要: 现在你对“什么是设计模式”已经有了感性认识,也许有人会问:“为什么要学习设计模式呢?”原因有很多,一些非常明显,而另一些则不那么明显。学习模式最常见的理由是因为我们可以借其:● 复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙。我可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案了。● 确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识。设计模式在项目的分析和设计阶段提供了共同的基准点。模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来。等你读完本书 阅读全文
posted @ 2011-01-05 19:43 老男孩咖啡 阅读(201) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=253&extra=page%3D3设计模式是面向对象编程的热门话题之一,越来越多的开发人员认识到设计模式的重要性。采用各种语言实现设计模式的文章也越来越多,但是很多开发人员发现很难将设计模式与实际开发中需要解决的具体问题相联系。因为使用设计模式的难点往往不在于模式的实现,而在于很难确定哪种模式可以在现实的应用场景中采用,从而导致了在现实的项目中,面对客户的压力,我们总是采用最直截了当的方法解决问题,来不及多考虑这些方法的优劣,即使明知将带来更大的麻烦也必须如此。有些时候因为选择了不恰当的 阅读全文
posted @ 2011-01-05 19:43 老男孩咖啡 阅读(108) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=256&extra=page%3D3如果你的应用基于容器,那么Singleton模式少用或者不用,可以使用相关替代技术 Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类 线程 内存等概念有相当的了解CoR的优点: 因为无法预知来自外界(客户端)的请求是属于哪种类型,每个类如果碰到它不能处理的请求只要放弃就可以。 缺点是效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。 在Java AWT1.0中,对于鼠标按 阅读全文
posted @ 2011-01-05 19:42 老男孩咖啡 阅读(136) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=255&extra=page%3D3最近一直在看《Design Patterns: Elements of Reusable Object-Oriented Software》这本书,不知道看过这本书的人是不是有摸不到头绪,无处下手的感觉, OK,和我一样/hand. 书里面讲述的23种模式经常把我弄的一蹋糊涂,这本书不看个三、四遍以上是很难理解的, 而且即便看了几遍, 也是很难把握住精髓。 里面讲解的例子是用C++和SMALLTALK这两种OO语言。对于我这种对C++半生不熟的笨鸟来说 阅读全文
posted @ 2011-01-05 19:42 老男孩咖啡 阅读(251) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=39&extra=page%3D4为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这*子系统更加容易使用。适用性1.当你要为一个*杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给*些不需要定制子系统的用户带来一些使用上的困难。Fa*ade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足*,而那些需要更多的可定制性的用户可以越 阅读全文
posted @ 2011-01-05 19:41 老男孩咖啡 阅读(108) 评论(0) 推荐(0) 编辑

摘要: http://35java.com/zhibo/forum.php?mod=viewthread&tid=257&extra=page%3D3目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一时之间成了潮流。Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP。本文不是要在理论上具体阐述何为AOP, 为何要进行AOP . 要详细了解学习AOP可以到它老家http://aosd.net去瞧瞧。这里只是意图通过一个简单的例子向初学者展示 阅读全文
posted @ 2011-01-05 19:41 老男孩咖啡 阅读(179) 评论(0) 推荐(0) 编辑