`
xyheqhd888
  • 浏览: 409167 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论
文章列表
  当通过添加新类型的集合来扩展代码库时,你也许发现有必要通过增加迭代器进一步扩展你的扩展类.本章讨论对组合结构进行迭代的特殊情况.除了对新类型的集合进行迭代之外,在多线程环境下进行迭代会导致一些值得关注的问题.迭代看起来简单,但是其中还有很多需要探讨的地方,并不成熟.     Iterator模式的意图在于为开发人员提供一种顺序访问集合元素的方法.   1.常规迭代:   Java对迭代提供很多支持:   (1)For,while和repeat循环,通常使用整数的索引;   (2)Enumeration类(在java.util中);   (3)Iterator类(也存在于jav ...
   CompositeIterator类的next()方法需要枚举属于某组合对象的每个子对象的节点.我们需要子类来实现iterator(:Set)方法,以便于next()代码可以使用.图2给出了这些类和接口的关系.       为更新ProcessComponent类层次结构,以便于枚举,我们需要提供一个iterator()方法: public ComponentIterator iterator(){ return iterator(new HashSet()); } public abstract ComponentIterator iterator(Set ...
3.对组合结构进行迭代:   很容易设计算法来遍历组合结构,访问其中每个成员,并执行某种操作.创建迭代器也许比创建递归算法更加困难.难点在于如何返回对其他程序的控制权、记录某种标签,以便于迭代器能够返回继续执行。 ...
//工厂方法模式示例: package innerclasses; import static net.mindview.util.Print.*; interface Service{ void method1(); void method2(); } interface ServiceFactory{ Service getService(); } class Implementation1 implements Service{ private Implementation1 (){} ...
一、方法及作用域内的内部类:1.在一个方法内定义的类2.在一个方法内部的作用域内定义的类3.实现了一个接口的一个匿名类4.扩展了一个没有默认构造器的类的匿名类5.一个实现域初始化的匿名类6.一个使用实例初始化完成构造的匿名类(匿名内部类不能拥有构造器)   二、匿名内部类如果要用到外部类定义的对象,接受此参数的方法中对应的参数列表应该被声明为final型的。但是,如果不是直接在匿名内部类中使用此外部对象,则无需必须是final型的。比如如下两例: package innerclasses; public class Parcel10 { public Destina ...
package Initialization; class Tank{ int howFull = 0; Tank() { this(0);} Tank(int fullness){ howFull = fullness; } void sayHowFull(){ if(howFull == 0) System.out.println("Tank is empty!"); else System.out.println("Tank filling status : " + howFull); ...
转载至:http://wangding263.iteye.com/blog/297663 在windows命令行窗口下执行: C:\>netstat -aon|findstr "4444" TCP    127.0.0.1:4444         0.0.0.0:0              LISTENING       2434 由上面得知,端口被进程号为2434的进程占用,继续执行下面命令: C:\>tasklist|findstr "2434" javaw.exe                     2434 Console    ...
Flyweight模式可实现客户代码之间的对象共享,创建共享对象的职责,这一点普通对象是不具备的。一般的对象不必关心共享职责,任何时刻最多只能有一个客户代码引用它,其他时刻可以是其他客户代码引用。如果多个客户代码 ...
  当构造某对象时,也许无法保证总能事先获知对象的所有所需信息。尤其是,有时候目标对象的构造器的参数只能逐步获取,我们希望能够一步一步地构造目标对象,常见情况比如解析器和用户接口。或者,当对类的重点难以 ...
     面向对象开发人员通常希望明确和减少对象间的责任,从而降低对象之间的耦合程序.这样我们的系统更加容易修改,同时也可降低产生缺陷的风险。从某种程序上说,Java语言本身能够帮助降低对象间的耦合度。客户端只能 ...
Prototype模式不通过实例化类来创建一个新的未初始化的实例,而是通过复制一个现有的对象来生成新的对象。    1.作为工厂的原型:    假定Oozinoz公司的应用系统通过使用抽象工厂模式为不同的应用场合提供不同的图形用户界面。如下图列出了所用到的用户接口工厂: 三个抽象工厂(或称工具包)可以产生三种不同的“外观和感觉”的用户界面      Oozinoz公司的应用程序可以为用户在不同的应用场合提供合适的界面。但是当用户提出他们需要更多的用户界面工具包时,该系统存在以下问题:如果分别为用户指定的每种场合都提供一个用户接口工厂类,将会为我们带来繁重的工作量。为了避免用户接口 ...
2.  重新思考图像代理:     现在需要思考设计模式是否真的能够帮助我们。之前我们费尽心血实现了一个设计模式,而现在又要考虑将它拆掉。现实的开发中会遇到更多这样的情况,实际上这是很自然的。经过他人的评审之后,设计人员可以在发布之前重新构思自己的设计,并修改其中有问题的部分。在实际过程中,设计模式可以帮助我们设计和调试应用程序,另外也方便了他人对我们的设计进行讨论。就Oozinoz公司的ImageIconProxy类而言,模式也起到了自己的作用,虽然不实现Proxy模式会更简单。     ImageIcon类操控Image对象。如果不把绘图请求转发给单独的ImageIcon对象,而是直接操 ...
Proxy(代理)模式         普通对象所需要完成的任务是通过公共接口为外界提供自己所承诺的服务。然而,有时候合法的对象可能会因为各种原因而无法完成自己常规的任务。尤其是当对象需要很长时间才能载入内存、对象 ...
  通常,面向对象的软件开发要求尽可能细致地分配责任,从而使每个对象都能够独立完成自己的任务。Observer模式通过尽可能缩小一个对象应对其他对象承担的责任来支持这种责任分配。而Singleton模式将责任集中于其他对象都可 ...
Observer模式的宗旨是在多个对象之间定义一对多的关系,以便当一个对象状态改变的时候,其他所有依赖于这个对象的对象都能够得到通知,并被自动更新。 1.经典范例:    借助于Observer模式,当某个对象发生变化时,关注该对象的其他对象可以被通知。这种模式的一个最常见的例子是图形用户界面。每当图形界面的用户单击按钮或者调整滑动条的时候,该应用程序中许多对象都会对此做出反应。Java开发者假定应用程序都会关心图形界面用户何时改变GUI组件。很显然,Observer模式在
Global site tag (gtag.js) - Google Analytics