今天阅读一设计模式的pdf,学习到原型设计模式的时候,看如下的例子有些摸不到头脑了。通过实践,判定其为错误的实现,对该pdf的作者很无语的。
其实现的代码如下:
public abstract class AbstractSpoon implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
System.out.println("clone");
// TODO Auto-generated method stub
Object 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");
}
@Override
public void out() {
// TODO Auto-generated method stub
System.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出的新对象进行修改。
- 大小: 44 KB
分享到:
相关推荐
c# 设计模式 原型模式
该代码是android应用设计模式之原型模式小例子
设计模式C++学习之原型模式(Prototype)
设计模式的原型模式的例子,希望对大家有用~~~~~~~~
iOS设计模式之原型设计模式
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/1032892
这个是http://blog.csdn.net/dawanganban/article/details/9900539博客中java设计模式的源代码。下载前请先看《设计模式——原型模式》一文。
一个演示在iOS应用开发中如何使用原型设计模式的Demo
设计模式专题之(五)原型模式---设计模式原型模式示例代码(python--c++)
设计模式之原型模式的Java版本实现和UML类设计图
iOS设计模式之原型模式 博客地址:http://blog.csdn.net/ioswyl88219/article/details/17662945
10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework设计模式 Spring 设计模式
代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊
设计模式之禅之 原型模式 设计模式之禅之 原型模式 设计模式之禅之 原型模式设计模式之禅之 原型模式
iOS 设计模式 原型模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
设计模式原型模式PPT学习教案.pptx
设计模式 原型模式 设计思想 演过过程 重构过程