JS設計模式(二)--- 單例模式
我們繼續說小明那個例子
上次說到小明買回了所有的東西,書院的先生一看賬單:¥4386
雖然覺得這錢花的有點多,但這一次的採購還是要交給小明去做
先生說:小明啊,我給你一個賬單,你每買一件商品都要在這個賬單上寫上,並讓老闆簽字
class Order {
constructor() {
this.goodList = [];
this.total = 0;
}
add(good) {
this.goodList.push(good);
this.total += good.price;
}
}
Order.getOrder = (function() { //使用閉包,保證了維護一個order物件
let order;
return function() {
if(!order) {
order = new Order();
}
return order;
}
})();
class Good {
constructor(name, price) {
this.name = name;
this.price = price;
}
showInfo() {
console.log(`商品名:${this.name} 價格:¥${this.price}`);
}
}
class Shop {
constructor() {
this.order = Order.getOrder();
}
sell(good) {
this.order.add(good);
}
}
class ToyShop extends Shop{
constructor() {
super();
}
sell(name) {
switch(name) {
case '樂高': super.sell(new Good('樂高', 3600));
case '積木': super.sell(new Good('積木', 288));
}
}
}
class SportShop extends Shop{
constructor() {
super();
}
sell(name) {
switch(name) {
case '足球': super.sell(new Good('足球', 80));
case '籃球': super.sell(new Good('籃球', 65));
}
}
}
class Student {
constructor(name) {
this.name = name;
this.order = Order.getOrder();
}
getTotal() {
console.log(`採購商品總價:¥${this.order.total}`);
}
}
小明走在大街上…
let xiaoming = new Student('小明');
小明進了球具店,買了足球和籃球
let sportShop = new SportShop();
sportShop.sell('足球');
sportShop.sell('籃球');
小明進了文具店,買了樂高和積木
let toyShop = new ToyShop();
toyShop.sell('樂高');
toyShop.sell('積木');
小明結束了採購
xiaoming.getTotal();
先生拿到賬單(order)一看:哦,原來樂高怎麼貴啊,下次就不買樂高了哈
相關文章
- jS設計模式二:單例模式JS設計模式單例
- js設計模式--單例模式JS設計模式單例
- 設計模式(二)——單例模式設計模式單例
- js設計模式之單例模式JS設計模式單例
- 設計模式(單例模式)設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- java23種設計模式—— 二、單例模式Java設計模式單例
- 設計模式-單例模式、多例模式設計模式單例
- 設計模式之單例設計模式設計模式單例
- 設計模式(一)_單例模式設計模式單例
- 常用設計模式-單例模式設計模式單例
- 設計模式之單例模式設計模式單例
- Java設計模式【單例模式】Java設計模式單例
- Java設計模式 | 單例模式Java設計模式單例
- 001設計模式:單例模式設計模式單例
- # Python設計模式 單例模式Python設計模式單例
- 設計模式一(單例模式)設計模式單例
- 設計模式之☞單例模式設計模式單例
- Java設計模式——單例模式Java設計模式單例
- Java設計模式–單例模式Java設計模式單例
- Java設計模式-單例模式Java設計模式單例
- 設計模式之---單例模式設計模式單例
- Java設計模式--單例模式Java設計模式單例
- Python設計模式——單例模式Python設計模式單例
- 設計模式—singleton(單例模式)設計模式單例
- python設計模式-單例模式Python設計模式單例
- 設計模式總結 —— 單例設計模式設計模式單例
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- 單例設計模式單例設計模式
- Javascript設計模式之單例模式JavaScript設計模式單例
- PHP 設計模式之——單例模式PHP設計模式單例
- Javascript設計模式(三)單例模式JavaScript設計模式單例
- golang設計模式之單例模式Golang設計模式單例
- 前端設計模式(2)--單例模式前端設計模式單例