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

  UML 图:

  原型类:

package com.cnblog.clarck;

/**
* 原型类
*
* @author clarck
*
*/
public abstract class Prototype {
private String mID; public Prototype(String id) {
mID = id;
} public String getID() {
return mID;
} public abstract Prototype Clone();
}

  具体原型类:

package com.cnblog.clarck;

/**
* 要想真正拥有克隆的能力,就需要实现Cloneable接口,重写clone方法。通过克隆方法得到的对象得到的是一个本地的副本
*
* @author clarck
*
*/
public class ConcreatePrototype1 extends Prototype implements Cloneable { public ConcreatePrototype1(String id) {
super(id);
} @Override
public Prototype Clone() {
Prototype protoType = null;
try {
protoType = (Prototype) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
} return protoType;
} }
package com.cnblog.clarck;

/**
* 要想真正拥有克隆的能力,就需要实现Cloneable接口,重写clone方法。通过克隆方法得到的对象得到的是一个本地的副本
*
* @author clarck
*
*/
public class ConcreatePrototype2 extends Prototype implements Cloneable { public ConcreatePrototype2(String id) {
super(id);
} @Override
public Prototype Clone() {
Prototype protoType = null;
try {
protoType = (Prototype) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
} return protoType;
} }

  测试类:

package com.cnblog.clarck;

/**
* 测试类
*
* @author clarck
*
*/
public class Client {
public static void main(String[] args) {
ConcreatePrototype1 p1 = new ConcreatePrototype1("clarck");
ConcreatePrototype1 c1 = (ConcreatePrototype1) p1.Clone(); String str = String.format("id:%s", c1.getID());
System.out.println(str); ConcreatePrototype1 p2 = new ConcreatePrototype1("clarck2");
ConcreatePrototype1 c2 = (ConcreatePrototype1) p2.Clone(); String str2 = String.format("id:%s", c2.getID());
System.out.println(str2);
}
}

设计模式——原型模式(Prototype Pattern)的更多相关文章

  1. C#设计模式——原型模式(Prototype Pattern)

    一.概述 在软件开发中,经常会碰上某些对象,其创建的过程比较复杂,而且随着需求的变化,其创建过程也会发生剧烈的变化,但他们的接口却能比较稳定.对这类对象的创建,我们应该遵循依赖倒置原则,即抽象不应该依 ...

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

    一.原型模式简介(Brief Introduction) 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. Specify the kin ...

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

    原文:乐在其中设计模式(C#) - 原型模式(Prototype Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:weba ...

  4. 设计模式系列之原型模式(Prototype Pattern)——对象的克隆

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  5. 二十四种设计模式:原型模式(Prototype Pattern)

    原型模式(Prototype Pattern) 介绍用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象.示例有一个Message实体类,现在要克隆它. MessageModel usin ...

  6. PHP设计模式 原型模式(Prototype)

    定义 和工厂模式类似,用来创建对象.但实现机制不同,原型模式是先创建一个对象,采用clone的方式进行新对象的创建. 场景 大对象的创建. 优点 1.可以在运行时刻增加和删除产品 2.可以改变值或结构 ...

  7. 2.6 《硬啃设计模式》第8章 复制不是很难 - 原型模式(Prototype Pattern)

    案例: 某即时战略游戏,你训练出来各种很强的战士. 为了增加游戏的可玩性,增加了一种复制魔法.实施该魔法,可以复制任意的战士. 你会怎样考虑这个设计? 在继续阅读之前,请先认真思考并写出你的设计,这样 ...

  8. python 设计模式之原型模式 Prototype Pattern

    #引入 例子1: 孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来. 例子2:寄个快递下面是一个邮寄快递的场景:“给我寄个快递.”顾客说.“寄往什么地方?寄给……?”你问.“和上次差不多一样,只是邮 ...

  9. 【UE4 设计模式】原型模式 Prototype Pattern

    概述 描述 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.如孙悟空猴毛分身.鸣人影之分身.剑光分化.无限剑制 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象, ...

随机推荐

  1. JENKINS安装及新建用户,权限配置

    JENKINS安装及新建用户,权限配置 1. 下载安装 jenkins 官网地址https://jenkins.io/index.html 下载地址https://jenkins.io/downloa ...

  2. Activemq API使用(整合spring)

    整合spring之后,主要用的就是org.springframework.jms.core.JmsTemplate的API了,在spring-jms-xxx.jar中. 引入整合需要的jar包: &l ...

  3. 路由器中带宽设置(Bandwidth) 20MHZ/40MHZ

    原文是英文的,在这里:http://routerguide.net/setting-up-20-mhz-or-40-mhz-bandwidth-how-to-improve-wifi-network- ...

  4. 第三章:ionic环境搭建之windows篇

    下面是在windows操作系统上面安装ionic的步骤,已经在Windows 10/ 7/ XP下面通过验证. 安装JDK 1.1 下载(http://www.oracle.com/technetwo ...

  5. 一些Andoid studio常用的快捷键

    常用快捷键    Android Studio是基于IntelliJ IDEA的,我们都知道,IDEA是一个很方便很好用的IDE,其中有许多快捷键,但是太多快捷键我们也记不住. 其实,我们可以记住几个 ...

  6. Linux 上安装 weblogic12C (远程图形界面安装) (二)

    上一篇Linux 上安装 weblogic12C (静默安装)介绍了静默方式安装weblogic12C的方式,这一篇主要介绍在windows主机上通过远程图形界面的方式安装weblogic的方式 一. ...

  7. unity5.5 5.6 使用c#6.0或7.0

    http://blog.csdn.net/davied9/article/details/77281393

  8. [Matlab] Galois Field arrays

    Operations supported for Galois Field arrays: + - - Addition and subtraction of Galois arrays. * / \ ...

  9. 弱类型dynamic与var

    dynamic与var都可代替任何类型 var关键字是C# 3.0开始新增的特性,称为推断类型. 1.必须在定义时初始化 2.一但初始化完成就不能再给变量赋与初始化值类型不同的值 3.var要求是局部 ...

  10. Redis的Set数据类型

    Sets 就是一个集合,集合的概念就是一堆不重复值的组合.利用Redis提供的Sets数据结构,可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一 ...