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)模式的更多相关文章

  1. 原型(Prototype)模式

    原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是原型模式的用意.原型模式的结构 原型模式要求对象实现一个可以“克隆 ...

  2. 设计模式C++描述----08.原型(Prototype)模式

    一. 概述 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 换句话说,就是不用重新初始化对象,而是动态地获得对象运行时的状态. 再说明白点,就是要一个拷贝过构造函数类似功能的接 ...

  3. 设计模式--原型(Prototype)模式

    写这些也许有人认为“为了模式而模式”.Insus.NET所想到的,每个大师成为大师之前,也许都得这样做. 走路,从小就开始学,直至现在,谁还不是为了走路而走路?一直重复着...... 很多人没有分享自 ...

  4. 六、原型(Prototype)模式

    原型模式是对象的创建模式,通过给出一个原型对象来指明所要创建的对象的类型.然后用复制这个原型对象的方法来创建出更多同类型的对象. 原型模式可以不用重新初始化对象,而动态的获取对象运行时的状态.使用原型 ...

  5. 克隆复制可使用原型( Prototype)设计模式

    今天有学习设计模式的原型(Prototype)<设计模式--原型(Prototype)模式>http://www.cnblogs.com/insus/p/4152773.html .为了加 ...

  6. Java设计模式-原型模式(Prototype)

    原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 原型模式的结构 原型模式要求对象实现一个可以“克 ...

  7. Java设计模式(4)原型模式(Prototype模式)

    Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是: ...

  8. 4.java设计模式-原型模式(prototype)

    在<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更 ...

  9. Java设计模式:Prototype(原型)模式

    概念定义 使用原型实例指定待创建对象的种类,并通过拷贝该原型来创建新的对象.Prototype模式允许一个原型对象克隆(复制)出多个与其相同的对象,而无需知道任何如何创建的细节. 应用场景 对象的创建 ...

随机推荐

  1. UVa-208 Firetruck (图的DFS)

    UVA-208 天道好轮回.UVA饶过谁. 就是一个图的DFS. 不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE. #include <iostream> ...

  2. idea xml 一键生成 javabean

    操作步骤 1.复制的xml文件到工程的一个文件下 2.选中文件tools -> XML ACTIONS -> Generate schema from instance Document ...

  3. 【01】let和const命令

    let和const命令   魔芋总结: 01,let声明变量,只在代码块{}内有效. 02,不存在变量提升,只能先声明,再使用.否则报错. 03,暂时性死区 如果代码块中存在let和const声明的变 ...

  4. Eclipse截取android报错log

    Eclipse截取android报错log: 1.前提条件:已安装eclipse 2. LogCat界面设置: Logcat是Android 编程中一个命令行工具,可以用于得到程序的 log 信息,可 ...

  5. Cookie测试的测试点

    1.禁止使用Cookie:设置浏览器禁止使用Cookie,访问网页后,检查存放Cookie文件中未生成相关文件: 2.Cookie寻出路径:按照操作系统和浏览器对Cookie存放路径的设置,检查存放路 ...

  6. 【PL/SQL编程基础】

    [PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...

  7. ppp详解

    ppp   一   PPP     point to point protocol               数据链路层协议 PPP session establishment 1 link est ...

  8. 【JavaScript 14—学习总结】:从小事做起

    导读:花了将近两个月,JavaScript的学习视频算是做完了.里面的例子,都敲过一遍,但有少数的几个就是实现不了,比如:百度分享侧栏随着滚动条移动:菜单切换只对第一个起作用等,也就先放着了.现在,就 ...

  9. POJ-3481 Double Queue,Treap树和set花式水过!

                                                    Double Queue 本打算学二叉树,单纯的二叉树感觉也就那几种遍历了, 无意中看到了这个题,然后就 ...

  10. 【NOIP2014】伤感·伤感·伤感

    Day <0 虽说初三的时候考过一次提高组,而且还考得不错,但自己还是挺看重这次NOIP的[你想想旁边两大神级别人物在死命刷题,蒟蒻怎敢颓废]于是切完所有复赛题后又做了好多好多次模拟赛,状态自己 ...