要應用flyweight模式,我們需要將Object屬性分爲內在屬性和外部屬性。固有屬性使對象唯一,而外部屬性由客戶端代碼設置並用於執行不同的操作。我沒有看到任何flyweight模式的使用。它真的有用嗎?
但我的問題是爲什麼我們不能同時擁有內部屬性和外部屬性作爲實例變量(請參見下面的Email類),只需在循環外部創建一個對象並在循環中設置參數併發送多個具有不同參數的電子郵件。
public class Test {
public static void main(String[] args) {
Email ob = new Email();
for (int i = 0; i < 10; i++) {
ob.sender = String.valueOf(i);
ob.sendEmail();
}
}
}
public class Email {
public String sender;
public void sendEmail()
{
System.out.println("Email sent to sender:"+sender);
}
}
確實Flyweight不是一種模式,它是一種在Java中節省內存的解決方案。它與oops –
@SweetWithrathne無關,flyweight是一個模式,來自規範設計模式書,可重用面向對象軟件_的元素_。說它不是一種模式,與OOP無關是完全無稽之談;並且該模式並不特定於Java。 GoF OOP模式是語言不可知的。 – jaco0646
@ jaco0646不是Java特定的:yh,我會同意這個說明。但它絕對與面向對象無關。你爲什麼這麼說是廢話?那麼它與OO有什麼關係?考慮到軟件的結構方面,設計模式就是一個解決問題的方法。如果flyweight是一個模式,如果有人說'merge-sort'是一個模式,我不會看錯。想看看你的想法。 :)) –