关于原型模式的看法和疑问
原型模式调用(具体代码在jdon网站设计模式原型模式):
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = (AbstractSpoon) spoon.clone();
System.out.println(spoon2.getSpoonName());
原型模式要先new一个对象出来,再利用这个对象"生出"一个自己的克隆。
这种创建对象方式怎么看都有一段代码是多余的,给我感觉挺无聊的。
结合工厂模式后的调用:
String className = "com.patterns.newprototype.SoupSpoon";
AbstractSpoon spoon = SoupSpoonFactory.getSpoon(className);
SpoonInterface spoon2 = (SpoonInterface) spoon.clone();
System.out.println(spoon2.getString());
//---------------------------------------------------------
public interface SpoonInterface {
public String getString();
}
//---------------------------------------------------------
public class SoupSpoonFactory {
public static AbstractSpoon getSpoon(String className) {
AbstractSpoon spoon = null;
try {
spoon = (AbstractSpoon) Class.forName(className).newInstance();
} catch(Exception er) {
}
return spoon;
}
}
public class SoupSpoon extends AbstractSpoon implements SpoonInterface {
public SoupSpoon() {
setSpoonName("中文的SoupSpoon!");
}
public String getString() {
return "打印SoupSpoon";
}
}
第二种:这么写主要是因为后面的看上去较好看,但感觉SoupSpoon之类的子类用了继承和接口实现;设计上可能有些幼稚;又好像在偶合性方面差了点。
第一种:似乎在应用中也不知道他有什么好处,有懂的道友指教一下。模式刚入门没什么经验.
[该贴被X.Underset于2008-03-15 01:21修改过]