2019独角兽企业重金招聘Python工程师标准>>>

?

原型模式定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

如何使用?
因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一下子变得很简单.

以勺子为例:

public abstract class AbstractSpoon implements Cloneable
{
  String spoonName;

  public void setSpoonName(String spoonName) {this.spoonName = spoonName;}
  public String getSpoonName() {return this.spoonName;}

  public Object clone()
  {
    Object object = null;
    try {
      object = super.clone();
    } catch (CloneNotSupportedException exception) {
      System.err.println("AbstractSpoon is not Cloneable");
    }
    return object;
  }
}

有个具体实现(ConcretePrototype):

public class SoupSpoon extends AbstractSpoon
{
  public SoupSpoon()
  {
    setSpoonName("Soup Spoon");
  }
}

?

调用Prototype模式很简单:

AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = spoon.clone();

当然也可以结合工厂模式来创建AbstractSpoon实例。

在Java中Prototype模式变成clone()方法的使用,由于Java的纯洁的面向对象特性,使得在Java中使用设计模式变得很自然,两者已经几乎是浑然一体了。这反映在很多模式上,如Interator遍历模式。

转载于:https://my.oschina.net/sunzhyng/blog/372046

设计模式之Prototype(原型)相关推荐

  1. java 设计模式 prototype_Java设计模式之Prototype原型模式

    一.场景描述 创建型模式中,从工厂方法模式,抽象工厂模式,到建造者模式,再到原型模式,我的理解是,创建对象的方式逐步从编码实现转向内存对象处理. 例如,在"仪器数据采集器"的子类/ ...

  2. 设计模式学习笔记——原型(Prototype)框架

    设计模式学习笔记--原型(Prototype)框架 @(设计模式)[设计模式, 原型模式, prototype] 设计模式学习笔记原型Prototype框架 基本介绍 原型案例 类图 实现代码 Pro ...

  3. 精读《设计模式 - Prototype 原型模式》

    Prototype(原型模式) Prototype(原型模式)属于创建型模式,既不是工厂也不是直接 New,而是以拷贝的方式创建对象. 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的 ...

  4. C++设计模式-Prototype原型模式

    作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...

  5. Prototype原型模式(创建型模式)

    1.原型模式解决的问题 现在有一个抽象的游戏设施建造系统,负责构建一个现代风格和古典风格的房屋和道路. 前提:抽象变化较慢,实现变化较快(不稳定) 整个抽象的游戏设施建造系统相对变化较慢,本例中只有一 ...

  6. Java描述设计模式(05):原型模式

    一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个 ...

  7. Prototype 原型模式

    一.意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.(Specify the kinds of objects to create using a prototypical in ...

  8. JavaScript 面向对象 (prototype 原型模式)

    一. JavaScript 设计思想 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览 ...

  9. Object.prototype 原型和原型链

    Object.prototype 原型和原型链 原型 Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,有些属性是隐藏的.换句话说,在对象创建 ...

  10. 三分钟带你看懂prototype原型——ES6进阶

    三分钟带你看懂prototype原型--ES6进阶 1. prototype 定义 2. new 构造函数 3. 存储 4. prototype 作用 1. prototype 定义 在JS中的类的实 ...

最新文章

  1. rails3 ajax替换成js
  2. Ant Design Pro 改变默认启动端口号
  3. 我对NHibernate的感受(2):何必到处都virtual
  4. spring 配置定时任务
  5. 宝藏好物gRPCurl
  6. [JavaScript] 函数同名问题
  7. Xml的编码和Bom
  8. TypeError: cannot unpack non-iterable int object查找指定文件夹下指定文件类型的数量
  9. 软件测试项目实战步骤
  10. 34个有用的 JavaScript 库,现在就可以用起来
  11. 基于51单片机ADC0808自动数字电压表仿真数码管显示
  12. 计算机电脑怎么开热点,电脑怎么设置wifi热点共享
  13. 新闻稿标题写作中的四大技巧
  14. 麦吉尔大学计算机工程的世界排名,麦吉尔大学计算机工程本科.pdf
  15. IVL和SVL的区别
  16. 云计算day12-Kubernetes_K8s
  17. MaxCompute 助力衣二三构建智能化运营工具
  18. Ruoyi-Vue是如何实现微信公众号免密登录的
  19. 关系数据库范式(1NF,2NF,3NF,BCNF,4NF,5NF)全解析
  20. 单边指数信号的特点_单边带通信的特点

热门文章

  1. 一个...买裤子的全过程
  2. 获取浏览器选中文本并操作
  3. 在Ubuntu下搭建Spark群集
  4. 好文要顶之 --- 简单粗暴地理解 JavaScript 原型链
  5. EK中fromCharCode和parseInt的配合使用
  6. C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件
  7. WCF Error: 客户端配置部分中,找不到引用协定{0}的默认终结点元素……
  8. 我的5年Python7年R,述说她们的差异在哪里?
  9. spring Boot 学习(一、Spring Boot与缓存)
  10. 从Retrofit的源码来看 HTTP