首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

29日学习原形设计模式

2012-12-24 
29日学习原型设计模式今天阅读一设计模式的pdf,学习到原型设计模式的时候,看如下的例子有些摸不到头脑了。

29日学习原型设计模式
今天阅读一设计模式的pdf,学习到原型设计模式的时候,看如下的例子有些摸不到头脑了。通过实践,判定其为错误的实现,对该pdf的作者很无语的。
其实现的代码如下:

public abstract class AbstractSpoon implements Cloneable{@Overrideprotected Object clone() throws CloneNotSupportedException {System.out.println("clone");// TODO Auto-generated method stubObject object = null;try{object = super.clone();}catch(CloneNotSupportedException e){}return object;}public abstract void out();private String spoonName = null;public String getSpoonName() {return spoonName;}public void setSpoonName(String spoonName) {this.spoonName = spoonName;}}public class Spoon1 extends AbstractSpoon{public Spoon1(){setSpoonName("spoon1");}@Overridepublic void out() {// TODO Auto-generated method stubSystem.out.println(this.getSpoonName());}}public class Spoon2 extends AbstractSpoon{public Spoon2(){setSpoonName("spoon2");}public void out(){System.out.println(getSpoonName());}}public class MainTest {public static void main(String[] args){AbstractSpoon spoon1 = new Spoon1();AbstractSpoon spoon2 = new Spoon2();System.out.print("spoon1 ");spoon1.out();System.out.print("spoon2 ");spoon2.out();}}

运行后发现根本就没有调用clone中的输出,也就是spoon2不是clone出来的。
通过查资料,通过以下uml图(在附件中)并实践的确实现了原型模式:
子类应包含父类的对象作为成员,子类构造函数中应显示调用该成员的clone方法,然后再对clone出的新对象进行修改。

热点排行