Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1278134
  • 博文数量: 185
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 3934
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 13:11
个人简介

iihero@ChinaUnix, ehero.[iihero] 数据库技术的痴迷爱好者. 您可以通过iihero AT qq.com联系到我 以下是我的三本图书: Sybase ASE in Action, Oracle Spatial及OCI高级编程, Java2网络协议内幕

文章分类

全部博文(185)

文章存档

2014年(4)

2013年(181)

分类: 项目管理

2013-07-23 09:55:52

概述
    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
 适用性
    1.当一个系统应该独立于它的产品创建、构成和表示时。

    2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。

    3.为了避免创建一个与产品类层次平行的工厂类层次时。

    4.当一个类的实例只能有几个不同状态组合中的一种时。

    建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
			
 参与者
    1. Prototype
       声明一个克隆自身的接口。

    2. ConcretePrototype
       实现一个克隆自身的操作。

    3. Client
       让一个原型克隆自身从而创建一个新的对象。
示例:
		


package com.sql9.created;

// Prototype abstract class Prototype implements Cloneable {     private String _name;     public void setName(String name)     {         _name = name;     }         public String getName()     {         return _name;     }         public Object clone()     {         try         {             return super.clone();         }         catch (Exception ex)         {             ex.printStackTrace();             return null;         }     } }

// Concrete Prototype class TrainPrototype extends Prototype {     public TrainPrototype(String name)     {         setName(name);     } }

public class PrototypeTest {     public static void main(String[] args)     {         Prototype prototype = new TrainPrototype("北方火车");         Prototype p2 = (Prototype)prototype.clone();         System.out.println("prototype name: " + prototype.getName());         System.out.println("p2 name: " + p2.getName());     } }

结果:


prototype name: 北方火车 p2 name: 北方火车

阅读(2048) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~