`
guafei
  • 浏览: 323059 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
实际上,既然Builder和Factory同属创建型模式,那么他们的最大共同点就在于都可以创建类对象, 在这点上,不光这两个模式一样,其它创建型模式也一样。但正如在《深入探索Factory模式与Prototype模式的异同(续)》一文中所说,这些模 式,功能上的相似,只是“形似而非神似”。既然这样,那好,下面就让我们能看看Builder和Factory在功能的相似上,存在哪些神韵方面的差别。      首先,也是最重要的一点,就是虽然Builder和Factory都可创建产品,但两者所创建的产品类型完全不一样。Factory创建只能是单一的产品(单一在这指它非复合产品),而Builder所创 ...
多种设计模式能够解决普通构造器不能解决的问题。 1.普通构造的挑战:   突破题1:请列出Java构造器关于使用和行为的4条规则。   答:(1)如果开发者没有为类提供构造器,那么Java将会为该类提供默认的构造器.        (2)构造 ...
翻译为亨元模式,或直译为轻量级模式。所谓亨元,就是被其它对象共享使用的 对象。通过这种方式,系统减少了内存的占用。比如一个系统有一个成百上千、 成千上万的小对象,这些小对象可能拥有着共同的信息,那么这些共同的信息就 没有必要也重复成千上万次。把这些共同信息抽取出来,形成一个对象,即是亨 元。这些成千上万的其它对象只需要引用这个亨元即可。 举个例子,在棋类程序中,有时候我们会把一个棋子当成为一个对象。这个对象 包含着位置信息、字体信息、颜色信息、样式信息等。如下所示, class 棋子{   public 名字(车、马、炮等)   public 位置信息   public 字体信息 ...
责任链模式(Chain of Responsibility) 感觉这种模式很有用的,深入学习学习。。。。 一、引言 初看责任链模式,心里不禁想起了一个以前听过的相声:看牙。说的是一个病人看牙的时候,医生不小心把拔下的一个牙掉进了病人 ...
代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引用. 代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务的.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理. 代理模式涉及的角色: 1:抽象主题角色.声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替. 2:代理主题角色.含有真实主题的引用,从而可以在任何时候操作真实主题,代理主题功过提供和真实主题相同的接口,使它可以随时代替真实主题.代理主 ...
size=9] 论坛上很多人都讲设计模式,也讲了很多设计模式,现在也来说说我对一些设计模式的理解,对于一些简单的模式就不多说了,一切都在我以前写的例子中使用到了,比如说在velocity和freemarker的比较那篇文章里用到了单例,工厂,方法模板,在java邮件,在简单和复杂之间那篇文章里用到了策略,适配,在easywebwork中也使用了几种设计模式,在哪些文章我没有对设计模式进行详细的讲解是因为我觉得那些都是些常用的模式,大家肯定经常见到,一看就明白了,根本用不着讲解,而在那篇《解惑:在spring+hibernate中,只读事务是如何被优化的。http://www.iteye.com/ ...
Abstract          在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用。这个机制在single-threaded环境下的实现非常简单,然而在multi-threaded环境下却存在隐患。本文重点介绍惰性加载机制以及其在多线程环境下的使用方法。(作者numberzero,参考IBM文章《Double-checked locking and the Singleton pattern》,欢迎转载与讨论) 1       单例模式的惰性加载 通常当我们设计一个单例类 ...
概要 单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化 (serialization)时如何处理这些缺陷。 单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在你确信你不再需要任何多于一个的实例的情况下。 单例模式的用意在于前一段中所关心的。通 ...
1 解决问题 一群平级的对象要互相调用(通信),于是系统变得杂乱无章的网状 因此设置一个中心节点,把网状变成星型,由中心节点控制协调。此时中心节点就叫中介者 2 解决方法 一个抽象中介者 一个抽象通信者 一个具 ...
意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。(GoF) *可以去看JDBC的源代码 场景 现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端的实现中进行JDBC操作。可是这样一来这个类将无比巨大,大到四只眼(眼睛兄)都看不过来! 有什么好办法能够降低这样操作的杂乱性呢?我们注意到这里有两个概念,分别是“表单(Table)”和“操作(Operator)”。也就是说这里有两个部分——“抽象”和“实现”。我们将这两个部分进行分离,然后根据需要,分别继承和实现表单和操作。这样我们就可以方便地通过表单和操作的组合来实现我们的工作了 ...
本文从一个给定的实现了组合(Composite)模式的例子开始,说明怎么在 这个数据结构上实现业务逻辑代码。依次介绍了非面向对象的方式、在组合结构中加入方法、使用访问者(Visitor)模式以及用改进后的访问者 (Visitor)模式来实现相同的业务逻辑代码,并且对于每种实现分别给出了优缺点。 读者定位于具有Java程序开发和设计模式经验的开发人员。 读者通过本文可以学到如何在组合(Composite)模式中实现各种不同的业务方法及其优缺点。 组合(Composite)模式 组合模式是结构型模式中的一种。GOF的《设计模式》一书中对使用组合模式的意图描述如下:将对象组合成树形结构以表示&q ...
GOF《设计模式》一书对Facade模式是这样描述的:        为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。        大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如, 我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开 它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。        我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTw ...
Global site tag (gtag.js) - Google Analytics