下面是网上的原型模式例子public abstract class Father implements Cloneable{
private String className; public String getClassName() {
return className;
} public void setClassName(String className) {
this.className = className;
}
public Object clone(){
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return obj;
}
}public class Sun1 extends Father{
public Sun1(){
setClassName("Sun1");
}
public void sun1(){}
}public class Sun2 extends Father{
public Sun2(){
setClassName("Sun2");
}
public void sun2(){}
}public class Test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Father f1 = new Sun1();
Father f2 = new Sun2();
System.out.println(f1.getClassName());
System.out.println(f2.getClassName());

}}在Test中测试,没看出来原型有什么用,感觉sun1 sun2只是调用了父类的set方法,什么都没做

解决方案 »

  1.   

    就是clone
    super.clone()  浅度复制自己重写clone方法  深度复制
      

  2.   

    我表示你看的例子写得太差了  你这和原型没什么关系啊我给你 改一下
    public abstract class Father implements Cloneable{
        private String className;    public String getClassName() {
            return className;
        }    public void setClassName(String className) {
            this.className = className;
        }
        public Object clone(){
            Object obj = null;
            try {
                obj = super.clone();
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
            return obj;
        }
    }public class Sun1 extends Father{
        public Sun1(){
            
        }
        public static void main(String [] ags){
           Father sun=new Sun1();
            Farher sunClone=sun.clone();
    }
    }原型模式定义   用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象这里  Sun1 就是实际原型,Father 就是 抽象原型 。。   sunClone 通过 sun 的 clone 方法 来 生成 
    原型的优点
    Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
    另外 原型模式需要注意的是 深克隆与浅克隆  你可以去 看看我的博客  我 给出了 例子 
    另外 克隆需要注意 )。克隆满足的条件:对于任何对象x,都有x.clone()!=x,换言之,克隆的对象不是原来的对象;x.clone().getClass()==x.getClass(),换言之,克隆的对象与原对象是同一类型。x.clone().equals(x)成立。
      

  3.   

    从百度图文上看到的,TNND也不写全点,我还纳闷呢,哪体现出原型了
      

  4.   

    原型模式是做什么的?最终目的就相当于new出来一个对象?
      

  5.   

    原型,比如我们找工作,要投简历,我们可以打印多分简历,然后去投递,另一种是我们打印一份,然后复印多份出来,然后去投递,第二种方法就类似于设计模式的原型设计模式。
    我这里有一个例子你可以看一下:
    http://blog.csdn.net/daijope/article/details/6605115