《Java与模式》选读“原始模型(Prototype)模式”
这本书详细讲解了模式理论的由来(很多人可能不知道模式理论与中国道家思想的渊源),面向对象的软件设计原则,一直讲到二十几个设计模式,以及这些模式在Java语言中的实现等等。书中给出了大量来自华尔街系统的真实项目的例子,用来讲解设计模式在系统设计中的应用。 这本书处于理论和实践之间,是一本定位独特、风格独特的书。希望各位喜欢。 阎宏 javapatterns@yahoo.com www.WebEndsHere.com 原始模型模式属于对象的创建模式[GOF95]。通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是原始模型模式的用意。 从孙大圣的手段谈起 --------------------- 孙悟空在与黄风怪的战斗中,“使一个身外身的手段:把毫毛揪下一把,用口嚼得粉碎,望上一喷,叫声‘变!’变有百十个行者,都是一样打扮,各执一根铁棒,把那怪围在空中。” 换言之,孙悟空可以根据自己的形像,复制出很多“身外之身”来。 老孙的这种身外身的手段在面向对象的设计领域里,叫做原始模型(Prototype)模式。 Java语言的构件模型直接支持原始模型模式。所有的JavaBean都继承自java.lang.Object,而Object类提供一个clone()方法,可以将一个JavaBean对象复制一份;但是这个JavaBean必须实现一个标示接口Cloneable表明这个JavaBean支持复制。如果一个对象没有实现这个接口而调用clone()方法,Java编译器会抛出CloneNotSupportedException异常。(关于标示接口的概念及相关讨论,请见本书的“专题:Java接口”一章。) Java的所有类都是从java.lang.Object类继承而来;而Object类提供下面的方法对对象进行复制: protected Object clone() 子类当然也可以把这个方法置换掉,提供满足自己需要的复制方法。对象的复制有一个基本问题,就是对象通常都有对其它的对象的引用;当使用Object类的clone()方法来复制一个对象时,此对象对其它对象的引用也同时会被复制一份。 Java语言提供的Cloneable接口只起一个作用,就是在运行时期通知Java虚拟机可以安全地在这个类上使用clone()方法。通过调用这个clone()方法可以得到一个对象的复制。由于Object类本身并不实现Cloneable接口,因此如果所考虑的类没有实现Cloneable接口时,调用clone()方法会抛出CloneNotSupportedException异常。 系统可以在自己的类里面置换掉java.lang.Object提供的clone()方法,以便控制复制的过程。 克隆满足的
相关文档:
鉴于许多同学对这个main方法的迷惑!我这里提供一些意见,希望对大家有帮助!呵呵!
****我们说加载先:
Java的类是用到才开始加载的,并且在每个类的构造器调用之前,类的每个域(成员变量)都要首先被编译器初始化一次,然后才轮到构造器来干活儿。但是,Java ......
import java.util.*;
public class stack
{
private List list=new ArrayList();
private int index=0;
public void push(Object obj)
& ......
===================================TimerTask=======================================
import java.util.TimerTask;
import java.util.Calendar;
public class MyTask extends TimerTask
{
private ......
动态代理是指客户通过代理类来调用其它对象的方法
动态代理使用场合:
•
远程方法调用(RMI)
•
1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法
2.创建被代理的类以及接口
3.通过Proxy的静态方法
newProxyInstance(ClassLoader loader, Class[] interfaces, Invocat ......
File(文件类)
尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外 ......