大B:“我就以咖啡外賣店寫幾個java類來描述說明Flyweight設計模式的實現方式吧。”
客戶買咖啡下訂單,訂單隻區分咖啡口味,如果下了1W個訂單,而咖啡店隻賣20種口味的咖啡,那麼我們就沒有必要生成1W個訂單對象,通過享元模式我們隻需要生成20個訂單對象。
這個例子舉的不太好,但足以說明問題。下麵是具體的代碼。
4、客戶類、帶有main方法的測試類
//執行賣出動作
//獲取咖啡口味
……1end
(“賣出一杯[”+flavor+“]。”);
……2end
//訂單池
//靜態工廠,負責生成訂單對象
//獲得訂單
//獲得新口味訂單
//放入對象池
//獲得已經賣出的咖啡全部口味數量
……3end
//客戶下的訂單
//訂單對象生成工廠
//增加訂單
//訂單生成工廠
//增加訂單
takeOrders(“摩卡”);
takeOrders(“卡布奇諾”);
takeOrders(“香草星冰樂”);
takeOrders(“香草星冰樂”);
takeOrders(“拿鐵”);
takeOrders(“卡布奇諾”);
takeOrders(“拿鐵”);
takeOrders(“卡布奇諾”);
takeOrders(“摩卡”);
takeOrders(“香草星冰樂”);
takeOrders(“卡布奇諾”);
takeOrders(“摩卡”);
takeOrders(“香草星冰樂”);
takeOrders(“拿鐵”);
takeOrders(“拿鐵”);
//賣咖啡
//打印生成的訂單java對象數量
//打印生成的訂單java對象數量
(本章完)