java设计模式--原型设计模式 Prototype

所谓的原型即给我们一个对象 我们就可以无限复制出这个对象的副本  ,而不是引用这个对象   。 

复制出来的副本 是一个个独立的对象 , 绝不是 原来对象的引用 。

这就要求设计到 java中的对象克隆技术  ,克隆的对象所在的类要实现Cloneable接口  以及覆盖 Object类的  clone()方法  。

我们不能直接调用Object的clone方法  因为  Object类并没有实现 Cloneable接口  如果调用就会抛出 一个  CloneNotSupporteException异常表示不支持  对象克隆 。

下面是一个 原型模式的简单例子: 
a=2
a=2
a==b为false

上面是输出的结果可以看出来 ,对象内容一样 但是 却不是同一个对象 。

class  Prototype  implements Cloneable
{  
public String name ;
public Prototype(){}
public Prototype(String name)
{
  this.name=name ;
}
@Override
public Object clone()   //不能直接调用Object类的clone方法 因为Object类 并没有实现Cloneable接口 所以会抛出不支持的异常 。
{
  Object obj=null ;
  try {
   obj=super.clone() ;
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return obj;
}


class  TypeA extends Prototype
{  
private int a   ;
TypeA(){}
TypeA(int a){this.a=a ;}
    public void show()
    {
     System.out.println("a="+this.a);
    }
    
}
//我们要做的是给定一个TypeA对象 我们 复制 无数个TypeA出来
public class MyPrototype

   public static void main(String []args)
   {
      TypeA  a=new TypeA(2) ; //一个原型对象 
      TypeA  b=(TypeA)a.clone()  ;
      a.show() ;
      b.show() ;
      System.out.println("a==b为" + (a==b));   //结果是false表示 不是同一个对象 但是对象的属性值完全不同    
   }
}

 

 

时间: 2024-08-02 09:51:09

java设计模式--原型设计模式 Prototype的相关文章

解析设计模式中的Prototype原型模式及在C++中的使用_C 语言

原型模式的意图是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时:或者 当一个类的实例只能有几个不同状态组合中的一种时.建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些. 关于这个模式,突然想到了小时候看的<西游记>,齐天大圣孙悟空再发飙的时候可以通过自己头上的 3 根毛立马复制出来成千上万的孙悟空,对付小妖怪很管用(数量最重要). 原型

浅谈Java设计模式关于原型模式(Prototype)思索建议

java教程:关于Java设计模式关于原型模式(Prototype) IT信息技术http://www.52ij.com/jishu/ 首先需要弄清楚什么叫原型模式,或者说为什么要有原型模式,运用它会给我们带来什么或能解决什么问题?原型模式(Prototype)同抽象工厂模式同属于创建型模式,它主要关注于大量相同或相似对象的创建问题,应用原型模式就是先需要一个原对象,然后通过对原对象进行复制(克隆),来产生一个与原对象相同或相似的新对象.注意这里所说的对象相同不是指复制出来的副本对象与原对象是同

Java原型设计模式(Prototype)

1.定义 原型模式(Prototype)就是通过复制一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例就是我们所称的原型对象,这个原型是可定制的. 2.原理 有两部分组成,抽象原型和具体原型.意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 3.原型模式UML图 4.实现 1>使用一个原型管理器: 2>实现克隆操作(浅拷贝和深拷贝): 3>初始化克隆对象. 5.示例程序 (1)利用Java中的clone方法深拷贝与浅拷贝 浅拷贝: public clas

设计模式(四)原型模式Prototype(创建型)

设计模式(四)原型模式Prototype  1.   概述 我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象. 例子1:孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来. 例子2:寄个快递下面是一个邮寄快递的场景:"给我寄个快递."顾客说."寄往什么地方?寄给--?"你问.&qu

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

原文:乐在其中设计模式(C#) - 原型模式(Prototype Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:webabcd 介绍 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 示例 有一个Message实体类,现在要克隆它. MessageModel using System;using System.Collections.Generic;using System.Text;namespac

学习php设计模式 php实现原型模式(prototype)_php技巧

一.意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象二.原型模式结构图 三.原型模式中主要角色 抽象原型(Prototype)角色:声明一个克隆自身的接口 具体原型(Concrete Prototype)角色:实现一个克隆自身的操作 四.原型模式的优点和缺点 Prototype模式优点: 1.可以在运行时刻增加和删除产品 2.可以改变值以指定新对象 3.可以改变结构以指定新对象 4.减少子类的构造 5.用类动态配置应用 Prototype模式的缺点: Prototype模式的

.Net设计模式实例之原型模式( Prototype Pattern)

一.原型模式简介(Brief Introduction) 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. 浅复制与深复制区别: 浅复制,被复制的所有变量都还有与原来对象相同的值,而所有的对其他对象的

C#设计模式之原型设计模式(Prototype)

一.原型(Prototype)模式 原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象. 从孙大圣的手段谈起 孙悟空在与黄风怪的战斗中,"使一个身外身的手段:把毫毛揪下一把,用口嚼得粉碎,望上一喷,叫声'变',变有百十个行者,都是一样得打扮,各执一根铁棒,把那怪围在空中."换而言之,孙悟空可以根据自己的形象,复制出很多"身外身"来. 老孙这种身外身的手段在面向对象设计领域里叫原型(Prototype)模

设计模式-原型模式

设计模式-原型模式 效果: 原型模式,其实就是完整的复制一个对象,以一个对象为样本,进行复制作业,然后再来使用. 以下以复制一个UIView的操作来讲解原型模式的实现 注:UIView对象是不能够复制的,我们需要完整的把UIView对象的参数都复制了后,就行了. http://stackoverflow.com/questions/4425939/can-uiview-be-copied Your app probably crashes with something like: [UIView