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());
}
}

最新文章

  1. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
  2. Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字
  3. gcc【数学几何】
  4. SimpleHashTable
  5. ubuntu14.04配置impala的odbc连接
  6. 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤
  7. App轮播图
  8. 6、iOS快速枚举
  9. 30分钟快速学习Shell脚本编程
  10. nginx中location匹配顺序
  11. git本机服务器配置(三):Gitblit的安装
  12. Python-简单的爬虫语句
  13. Linux下查看磁盘挂载的几种方法
  14. PHP开发——函数
  15. ABP框架系列之四十六:(Setting-Management-设置管理)
  16. db2 backup export
  17. bootstrapValidator常用验证规则总结
  18. phalcon7开发环境搭建
  19. html select与option标签
  20. 从Vue文件到Html文件

热门文章

  1. 杭电 1051 Wooden Sticks
  2. 牛客网暑期ACM多校训练营(第六场) J Heritage of skywalkert(数论, eth_element)
  3. sublime__最全面的 Sublime Text 使用指南
  4. ES6(Module模块化)
  5. 【02】你是如何理解 HTML 语义化的,有什么好处
  6. 每天一个linux命令目录(转)
  7. Codeforces 547B. Mike and Feet[单调栈/队列]
  8. 解决centos7中ens33中不显示IP等问题
  9. SLF4J 简单日志门面 介绍和使用
  10. 洛谷 [P2216] 理想的正方形