设计模式之Prototype——作业篇(原创)
2004-10-10 17:33
399 查看
设计模式之Prototype——作业篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
今年要交作业,可是由于我这几天沉迷于CS之中,到现在还没写作业,这可该怎么办呢,谁都知道我们老师最讨厌不写作业的学生了。嘿嘿,还好我有一门优秀的技能,那就是——Clone大法(俗称COPY大法),正是由于拥有该技能,才能使我残酷的斗争中立于不败之地。于是我以迅雷不及眼耳盗铃之势拿来了张三的作业,开始运功。
说道这里就不得不先说说什么叫Clone?
有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但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:定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
B:Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
C:Prototype模式最终演变成clone的使用。
今年要交作业,可是由于我这几天沉迷于CS之中,到现在还没写作业,这可该怎么办呢,谁都知道我们老师最讨厌不写作业的学生了。嘿嘿,还好我有一门优秀的技能,那就是——Clone大法(俗称COPY大法),正是由于拥有该技能,才能使我残酷的斗争中立于不败之地。于是我以迅雷不及眼耳盗铃之势拿来了张三的作业,开始运功。
说道这里就不得不先说说什么叫Clone?
有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但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:定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
B:Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
C:Prototype模式最终演变成clone的使用。
相关文章推荐
- 设计模式之Prototype——作业篇
- 设计模式之Prototype——作业篇
- 设计模式:Prototype 原型模式 - 同学你抄过别人的作业么?-clone()方法的使用
- 设计模式:Prototype 原型模式 - 同学你抄过别人的作业么?-clone()方法的使用
- 设计模式:原型模式(Prototype)
- 设计模式入门之原型模式Prototype
- 设计模式简单代码之prototype模式(画圆篇)
- [原创][推荐]C#设计模式-命令模式(POS收银台应用)
- 设计模式C++描述----08.原型(Prototype)模式
- 设计模式——原型模式(Prototype patterns)
- java设计模式5:Prototype
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 原型模式(Prototype) - Java实现
- 设计模式(2)-创建型-原型模式(Prototype)
- 设计模式之Mediator——联通篇(原创)
- Command 模式设计(原创)
- 设计模式之原型模式(ProtoType)
- 设计模式实例(Lua)笔记之五(Prototype 模式)
- 原型设计模式prototype-构造js自己定义对象
- [设计模式整理笔记 七] 原型模式(ProtoType)