關於原型模式的看法和疑問
原型模式呼叫(具體程式碼在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之類的子類用了繼承和介面實現;設計上可能有些幼稚;又好像在偶合性方面差了點。
第一種:似乎在應用中也不知道他有什麼好處,有懂的道友指教一下。模式剛入門沒什麼經驗.
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修改過]
相關文章
- 關於Proxy和Decorator設計模式的疑問設計模式
- 關於設計模式的疑問設計模式
- 關於字典和陣列的疑問陣列
- 關於工廠模式的一點個人看法模式
- 關於TargetServiceFactoryVisitable的疑問
- 關於 dingo API 的疑問GoAPI
- 關於jdonframework框架的小疑問Framework框架
- 關於Jpa和Mybatis的一些看法MyBatis
- 關於非同步介面呼叫的疑問?非同步
- 關於no-wait latch 的疑問AI
- 關於論壇快取的疑問快取
- 關於JTA實現的疑問
- 關於原型和原型鏈的精闢解讀原型
- 橋模式的疑問模式
- 關於技能技術企劃書的疑問和建議
- ValueObject和DTO模式的一些疑問Object模式
- js--原型和原型鏈相關問題JS原型
- 工廠模式的疑問模式
- Composite模式的疑問模式
- 關於javascript的原型和原型鏈,看我就夠了(一)JavaScript原型
- 關於javascript的原型和原型鏈,看我就夠了(二)JavaScript原型
- 關於javascript的原型和原型鏈,看我就夠了(三)JavaScript原型
- MySQL關於資料字典的一個疑問MySql
- 有幾點關於C語言的疑問C語言
- 關於Multiple Buffer Pools的一些疑問
- 關於多執行緒協作的疑問執行緒
- QI4J中關於entity的疑問
- 關於機器學習的一些看法機器學習
- 對於Lumen和Laravel的看法Laravel
- 關於例項變數和靜態變數的一點疑問變數
- composite模式疑問模式
- 關於Oracle臨時表的使用的小經歷和一點疑問?Oracle
- 關於SAVEPOINT和自定義異常使用的一點看法
- 關於JDONJIVE中DbFilterManager中程式碼的疑問Filter
- 關於租用香港伺服器疑問解答伺服器
- 關於租用香港伺服器疑問解答。伺服器
- 關於租用香港伺服器疑問解答?伺服器
- 關於橋模式的問題模式