• 技术文章 >Java >java教程

    Java 原型(Prototype)模式的代码示例

    黄舟黄舟2017-03-10 11:54:17原创595
    Java 原型(Prototype)模式的代码示例

    public class BaseSpoon implements Cloneable {//spoon 匙, 调羹 
    	String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    	@Override
    	protected BaseSpoon clone() throws CloneNotSupportedException {
    		System.out.println("clone a BaseSpoon");
    		BaseSpoon object = null;
    		try {
    			object = (BaseSpoon) super.clone();
    		} catch (CloneNotSupportedException e) {
    			e.printStackTrace();
    			System.err.println("BaseSpoon is not Cloneable");
    		}
    		return object;
    	}
    }


    public class SaladSpoon extends BaseSpoon {
    	
    	public SaladSpoon() {
    		setName("Salad Spoon");//沙拉 匙
    	}
    }


    public class SoupSpoon extends BaseSpoon {
    	
    	public SoupSpoon() {
    		setName("Soup Spoon");//汤匙
    	}
    }


    /*
     * 原型模式
     * 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
     * Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,
     * 工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
     * 在java中 体现为 clone() 对象
     */
    public class Test {
    	public static void main(String[] args) throws CloneNotSupportedException {
    		//创建原型
    		BaseSpoon soup1 = new SoupSpoon();
    		BaseSpoon salad1 = new SaladSpoon();
    		//clone原型 得到新对象
    		SoupSpoon soup2 = (SoupSpoon) soup1.clone();
    		SaladSpoon salad2 = (SaladSpoon) salad1.clone();
    		//输出clone后原型和对应新对象的名字
    		System.out.println("clone 后:" + soup1.getName() + "-" + soup2.getName());
    		System.out.println("clone 后:" + salad1.getName() + "-" + salad2.getName());
    		
    		soup1.setName("soup1 spoon");
    		salad1.setName("salad1 spoon");
    		soup2.setName("soup2 spoon");
    		salad2.setName("salad2 spoon");
    		
    		System.out.println("属性重新赋值后:" + soup1.getName() + "-" + soup2.getName());
    		System.out.println("属性重新赋值后:" + salad1.getName() + "-" + salad2.getName());
    	}
    }

    以上就是Java 原型(Prototype)模式的代码示例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java 实现建造者(Builder)模式的代码示例 下一篇:Java 适配器(Adapter)模式的实现方法
    PHP编程就业班

    相关文章推荐

    • 实例详解Java反序列化之反射机制• 五种方法!Java创建多线程总结• Java基础之类和对象、单例模式、继承• JAVA-5NIO之Selector• java基础之Object类

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网