原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝原型来创建新的实例对象。它允许一个对象再创建另外一个可定制的对象,根本无需知道任何创建细节,工作原理,通过将一个原型对象传给那个要发动创建的对象,这个发动创建对象通过请求原型对象拷贝它们自己来创建。
通俗点,就是通过拷贝来进行创建实例。
例如:
代码一:
public class AbstractSpoon implements Cloneable{
String spoonName;
public String getSpoonName() {
return spoonName;
}
public void setSpoonName(String spoonName) {
this.spoonName = spoonName;
}
public Object clone(){
Object object = null;
try {
object = super.clone();
System.out.println("clone is ok");
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
System.err.println("AbstractSpoon is not Cloneable");
}
return object;
}
}
代码二
public class SoupSpoon extends AbstractSpoon{
public SoupSpoon(){
setSpoonName("soup spoon");
}
public static void main(String[] args){
AbstractSpoon spoon = new SoupSpoon();
System.out.println(spoon);
AbstractSpoon spoon1 = (AbstractSpoon) spoon.clone();
System.out.println(spoon1);
AbstractSpoon spoon2 = (AbstractSpoon) spoon1.clone();
System.out.println(spoon2);
}
}
运行结果如下。
com.cn.prototype.SoupSpoon@757aef
clone is ok
com.cn.prototype.SoupSpoon@d9f9c3
clone is ok
com.cn.prototype.SoupSpoon@9cab16
从结果看,在后两次调用通过SoupSpoon的实例对象的clone(),还是创建了SoupSpoon实例.
分享到:
相关推荐
有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心 得,故笔者*写二十三种设计模式的简单例子、并整理二十三...所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐趣。
二十三种设计模式的详细解读 让您迅速了解设计模式 初学者的好资料!!!
从什么是设计模式,为什么要用设计模式,设计模式的分类和常用设计模式4个模块对设计模式进行简单的介绍
阅读本书,读者能够完整地理解12个核心的设计模式和1个分析模式,了解设计模式并不是孤立存在的,多个设计模式协同工作才能创建出更加坚固的应用程序。这里所讲授的12个模式并没有涵盖所有应该学会的模式,但是理解...
子和类图,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点。 所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐趣。 由于每个人对设计模式的...
所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐趣。 由于每个人对设计*式的理解都不尽一致,因此,可能本文档的例子*有不恰当的地方,还望各位读者指出不恰当的地方。
有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者*写二十三种设计模式的简单例子、 ... 所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐趣。
第01章 欲速则不达:了解设计模式 第02章 磨刀不误砍柴工:UML语言概述 第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法模式 (FactoryMethod) 第05章 再接再厉:抽象工厂模式 (Abstract...
事实上,我们可能很多情况下都是在不了解设计模式或者了解的不多的情况下作为程序员工作了多年。也在不经意间实现了一些设计模式。 那么我们为什么还要学习设计模式? 一方面,设计模式教我们如何使用面向对象...
prototype警告:学习了解原型模式前需先学习原型、原型链、prototype、__proto__、constructor等知识; 实现原型模式 ES5中的API:Object.create(prototype, optionalDescriptorObjects) Object.create()方法...
在学习设计模式之前,我们需要了解设计模式的背景和历史发展过程。设计模式的概念最初来自建筑领域,1977年,克里斯托夫·亚历山大在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并...
包含20种设计模式代码详解,有桥接模式,工厂模式等通常的20种设计模式代码详解,专业、简单的代码剖析,使人深刻、快速的了解设计模式
刘伟著设计模式实训教程,想了解设计模式的同学可以下载看看~
这是策略模式中的一个经典实例,通过鸭子问题,能让学习者更好的了解设计模式,这也是headfirst 设计模式中用的经典实例
阅读本书,读者能够完整地理解12个核心的设计模式和1个分析模式,了解设计模式并不是孤立存在的,多个设计模式协同工作才能创建出更加坚固的应用程序。这里所讲授的12个模式并没有涵盖所有应该学会的模式,但是...
阅读本书,读者能够完整地理解12个核心的设计模式和1个分析模式,了解设计模式并不是孤立存在的,多个设计模式协同工作才能创建出更加坚固的应用程序。这里所讲授的12个模式并没有涵盖所有应该学会的模式,但是理解...
很多我所认识的程序员在接触到设计模式之后,都有一种相见恨晚的感觉,有人形容学习了设计模式之后感觉自己好像已经脱胎换骨,达到了新的境界,还有人甚至把是否了解设计模式作为程序员划分水平的标准。 我们也不能...
看过一些设计模式方面的书籍和文章,虽然很正式,很权威,(也觉得有那么一点刻板),总是...当然,这不是一款真正意义上的游戏,只是为了了解设计模式,所以,我会尽可能的使游戏简单。废话不多说了,我们Start off吧。
所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐趣。 由于每个人对设计*式的理解都不尽一致,因此,可能本文档的例子*有不恰当的地方,还望各位读者指出不恰当的地方。 欢迎登录...
有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心 得,故笔者*写二十三种设计模式的简单例子、 ...所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享 受设计的乐趣。