關於原型模式的看法和疑問

X.Underset發表於2008-03-15
原型模式呼叫(具體程式碼在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修改過]

相關文章