设计模式之Prototype——作业篇(原创)

原创 2004年10月10日 17:33:00

设计模式之Prototype——作业篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

今年要交作业,可是由于我这几天沉迷于CS之中,到现在还没写作业,这可该怎么办呢,谁都知道我们老师最讨厌不写作业的学生了。嘿嘿,还好我有一门优秀的技能,那就是——Clone大法(俗称COPY大法),正是由于拥有该技能,才能使我残酷的斗争中立于不败之地。于是我以迅雷不及眼耳盗铃之势拿来了张三的作业,开始运功。

说道这里就不得不先说说什么叫Clone

有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,AB是两个独立的对象,但B的初始值是由A对象确定的。

好了言归正传,让我们开始吧。

 

1、在这里,先定义一个拷贝作业(CopyHomeWork)接口:

public interface CopyHomeWork extends Cloneable{

  public String getHomeWork() ;

  public void setHomeWork(String homeWork);

}

2、再定义一个作业(HomeWork)的实现类:

public abstract class HomeWork implements CopyHomeWork{

  String homeWork;

 

  public void setHomeWork(String homeWork) {

    this.homeWork = homeWork;

  }

 

  public String getHomeWork() {

    return this.homeWork;

  }

 

// 典型的调用clone()代码

  public Object clone() {

    Object object = null;

    try {

      object = super.clone();

    }

    catch (CloneNotSupportedException exception) {

      System.err.println("*** is not Cloneable");

    }

    return object;

  }

 

  public abstract void  DoHomeWork();  //做作业的抽象类

 

}

3、定义张三的作业(ZhangSanHomeWork)类:

public class ZhangSanHomeWork extends HomeWork{

 

  public void DoHomeWork() {

      System.out.println("张三作完了作业!");

  }

 

}

4、编写测试类:

public class TestCopyHomeWork {

  public static void  main(String args[]){

    ZhangSanHomeWork zhangsanHomeWork = new ZhangSanHomeWork();

    HomeWork myHomeWork = (HomeWork)zhangsanHomeWork.clone();

    myHomeWork.DoHomeWork();

    myHomeWork.setHomeWork("我正在抄作业,请勿打扰!");

    System.out.println(myHomeWork.getHomeWork());

  }

}

5、说明:

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

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

CPrototype模式最终演变成clone的使用。

 

 

设计模式(创建型)之原型模式(Prototype Pattern)

要理解原型原型模式必须先理解Java里的浅复制和深复制。有的地方,复制也叫做克隆。Java提供这两种克隆方式。 因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一...
  • yanbober
  • yanbober
  • 2015年04月29日 11:28
  • 3031

设计模式之Prototype——作业篇

    今年要交作业,可是由于我这几天沉迷于CS之中,到现在还没写作业,这可该怎么办呢,谁都知道我们老师最讨厌不写作业的学生了。嘿嘿,还好我有一门优秀的技能,那就是——Clone大法(俗称COPY大法...
  • cyokin
  • cyokin
  • 2004年11月10日 14:14
  • 685

《23种设计模式 Lua篇》 - 观察者模式

当观察哨发现入侵者,通知正在上班的警卫。
  • tubufeng
  • tubufeng
  • 2014年08月26日 19:53
  • 1541

设计模式总结之Prototype Pattern(原型模式)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  • cooldragon
  • cooldragon
  • 2016年08月11日 00:43
  • 1439

设计模式实例(Lua)笔记之五(Prototype 模式)

1.描述      首先从实际生活来了解原型模式的由来,假设你有一份非常好的讲义,你的朋友也想要一份,那么怎么办?重新手抄一份?显然不是,当然是用复印机复印一份来得方便、直接,并且准确性也高,这种用原...
  • my183100521
  • my183100521
  • 2015年08月20日 10:37
  • 1341

期末作业系列之设计模式

背景 又是一年的期末,今年大三上学期的设计模式作业是:运用5个以上的设计模式创建一个系统。(这里我问了一下老师,老师说反正就是要5个以上联系在一个project里的就行了嘿嘿嘿。) 作为一个平时不...
  • sayWhat_sayHello
  • sayWhat_sayHello
  • 2017年12月02日 16:04
  • 255

[置顶] 国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已出版

国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已由电子工业出版社出版。本书从理论到实战,用生活化的实例和通俗易懂的语言全面介绍Java多线程编程的"三十六计"——多...
  • viscent_huang
  • viscent_huang
  • 2015年11月18日 11:21
  • 4415

《Java多线程编程实战指南(设计模式篇)》答疑总结(陆续更新)

博客分类: 《Java多线程编程实战指南(设计模式篇)》答疑开展以来,不少网友提出的问题既有与本书有关的话题,也有Java多线程编程基础知识的相关话题。由于时间关系,对于重复的问题我...
  • dotedy
  • dotedy
  • 2015年11月27日 14:03
  • 888

我与C++设计模式(四)——prototype pattern

我故意将bia
  • guozhengdong
  • guozhengdong
  • 2014年10月01日 10:20
  • 497

《sed & awk》读书笔记之 sed 篇

Sed&awk笔记之sed篇:简单介绍 最近在阅读《sed & awk(第二版)》,这本书是sed和awk相关书籍中比较经典的一本。我在读书的时候有一个习惯,就是会作一些笔记,如果有条件我会放到博客中...
  • chenyulancn
  • chenyulancn
  • 2014年01月02日 15:24
  • 556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Prototype——作业篇(原创)
举报原因:
原因补充:

(最多只允许输入30个字)