prototype 模式就是说建立类的时候完成clone()方法,在需要用到这个类的时候,并且需要保存参数的情况,就把这个类的实例clone一个拿来用,那这和一般的clone有什么分别呢。是不是说上面这种情况的时候我们要用clone,因为这比直接new然后负值快,我们把这个叫做prototype 模式,是这么理解吗

prototype模式的内涵是利用已经存在的对象,修改其部分属性而获得新的对象
使用clone方法只是具体实现的一个手段吧,尤其是在java语言里,不知道在其他语言,如c++,smalltalk等里面是怎么做的

如果连接都要clone,一定是深度clone

super曾经转载过一篇文章,里面就讲到过prototype的一个在jive中很好的应用。值的看看。

最好讨论讨论。:)

(背后实际上还藏着一个Decorator,具体看jive,呵呵)

这篇文章地址:
http://www.jdon.com:81/jive/thread.jsp?forum=91&thread=4771&message=735229&redirect=true&hilite=true&q=Prototype

Now, If we don't care about Design Patterns,and take a look at Clone() method in Java.

Suppose we use deeper-clone to get a new connection, I am wodering if this way is a efficient way to create a new connection?

作为初学者,今天拜读bangq先生的设计模式之Prototype(原型),有些困惑不解,文章例子中提到,
“调用Prototype模式很简单:

AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon = new SaladSpoon(); ”
想请教诸位在创建soupspoon实例引用的时候,spoon中的clone()有没有被调用,如果不写clone方法,是不是saladspoon和soupspoon指向同一内存区域?
谢谢

这里是笔误,不应该两个spoon

看了老半天leitm 写的下面的代码,
public Connection connect(String strDriver){
try{
Class.forName(strDriver).newInstance();
Connection Conn = DriverManager.getConnectionstrUrl,prop);
return Conn;
}catch(Exception e){
return null;
}

觉得leitm根本就没有用Clone方法提高效率,上面基本的数据库连接代码压根就没省一句.
有一种挂羊头卖狗肉的感觉,对不起,leitm, 我只是说这段代码而已.

我还是不明白,为什么不用clone(),而非要搞一个什么Prototype出来。如果方便的话,如果能举一个必要的例子就好了。