日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-行为型模式-中介者模式

發布時間:2024/4/14 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-行为型模式-中介者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式-行為型模式-中介者模式

行為型模式

劃分類和對象的職責。

中介者模式

進銷存管理,即采購,銷售,庫存。

其中類圖

代碼如下

public class Purchase {// 采購IBM電腦public void buyIBMcomputer(int number){// 訪問庫存Stock stock = new STock();// 訪問銷售Sale sale = new Sale();// 電腦銷售情況int saleStatus = sale.getSaleStatus();// 對銷售進行判斷if(saleStatus > 80){ // 銷售情況良好System.out.println("采購IBM電腦" + number + "臺");// 往庫存里放入產品stock.increase(number);}else {int buyNumber = number / 2; // 折半銷售System.out.println("采購IBM電腦" + number + "臺");}}// 不再采購IBM電腦public void refuseBuyIBM(){System.out.println("不再采購IBM電腦");} }

該Purchase定義了采購電腦的標準。根據電腦的銷售情況,往庫存里放入產品。如果銷售不好,則折半銷售。
另外定義了一個不再采購IBM電腦。

庫存管理

public class Stock{// 初始化private static int COMPUTER_NUMBER = 100;// 庫存增加public void increase(int number){COMPUTER_NUMBER = COMPUTER_NUMBER + number;}// 庫存降低public void decrease(int number){COMPUTER_NUMBER = COMPUTER_NUMBER - number;}// 獲得庫存數量public int getStockNumber(){return COMPUTER_NUMBER;}// 通知銷售進行銷售public void clearStock(){Purchase purchase = new Purchase();Sale sale = new Sale();sale.offSale(); // 折半銷售purchase.refuseBuyIBM(); // 要求不再采購} }

然后書寫銷售管理

public class Sale{// 銷售public void sellIBMComputer(int number){// 訪問庫存Stock stock = new Stock();// 訪問采購Purchase purchase = new Purchase();if(stock.getStockNumber() < number){ // 如果庫存數量不足,進行購買purchase.buyIBMcomputer(number);}stock.decrase(number); // 銷售完成以后,清理庫存}// 反饋銷售情況,根據銷售判斷是否折半public int getSaleStatus(){Random rand = new Random(System.currentTimeMillis());int saleStatus = rand.nextint(100);return saleStatus;}// 進行折半銷售public void offSale(){Stock stock = new Stock();}}

最后繪制場景

public class Client{public static void main(String[] args){// 采購人員采購電腦Purchase purchase = new Purchase();purchase.buyIBMcomputer(100);// 銷售電腦Sale sale = new Sale();sale.selllBMComputer(1);// 庫房管理人員管理庫存Stock stock = new Stock();stock.clearStock();} }

改進


違反迪米特。
增加中介者

// 抽象中介者 public abstract class AbstractMediator{protected Purchase purchase;protected Sale sale;protected Stock stock;// 構造函數public AbstractMediator(){purchase = new Purchase(this);sale = new Sale(this);stock = new Stock(this);}// 事件方法,處理多個對象之間的關系public abstract void execute(String str, Object...objects); } // 產生中介者 public class Mediator extends AbstractMediator{public void execute(String str, Object...objects){if(str.equals("purchase.buy")){ // 如果需要采購電腦this.buyComputer((Integer)objects[0]); // 通知采購}else if(str.equals("sale sell")){ // 銷售電腦this.sellComputer((Integer)object[0]);}else if(str.equals("sale offsell")){ // 折半銷售this.offSell();}else if(str.equals("stock clear")){ // 清倉處理this.clearStock();}}private void buyComputer(int number){int saleStatus = super.sale.getSaleStatus();if(saleStatus > 80){ // 如果銷售良好super.stock.increase(number);}else{int buyNumber = number / 2;}}private void sellComputer(int number){if(super.stock.getStockNumber() < number){ // 庫存不夠銷售的時候super.purchase.buyIBMcomputer(number);}super.stock.decrease(number);}// 折半銷售電腦private void offSell(){}// 清倉處理private void clearStock(){// 要求清倉銷售super.sale.offSale();// 要求采購人員不要采購super.purchase.refuseBuyIBM();} }

然后對同事進行抽象

public abstract class AbstractColleague{protected AbstractMediator mediator;public AbstractColleagur(AbstractMediator _mediator){this.mediator = _mediator;} }

采購類

public class Purchase extends AbstractColleague{public Purchase(AbstractMediator _mediator){ // 和中介建立聯系super(_mediator);}// 采購電腦public void buyIBMcomputer(int number){super.meidator.execute("purchase.buy", number);}// 不在采購電腦public void refuseBuyIBM(){} }

對于庫存管理

public class Stock extends AbstractColleague{public Stock(ABstractMediator _mediator){super(_meidator);}// 剛剛開始電腦private static int COMPUTER_NUMBER = 100;// 庫存通知public void increase(int number){COMPUTER_NUMBER = COMPUTER_NUMBRT + number;}// 庫存降低public void decrease(int number){COMPUTER_NUMBER = COMPUTER_NUMBER - number;}// 獲得庫存數量public int getStockNumber(){return COMPUTER_NUMBER;}// 存貨量多,不采購,進行銷售public void clearStock(){super.mediator.execute("stock.clear");} }

銷售管理,類似不在闡述。
對于場景類進行修改如下

public class Client{public static void main(String[] args){AbstractMediator mediator = new Mediator();Purchase purchase = new Purchase(mediator); // 傳入具體的場景purchase.buyIBMcomputer(100);Sale sale = new Sale(mediator);sale.sellIBMComputer(1);Stock stock = new Stock(mediator);stock.clearStock();} }

應用

MVC,網關,一個購物車栗子,需求為選擇顏色,并輸入購買數量,要求和從后臺獲取到的庫存進行對比,在頁面顯示。思路,為三方,庫存數據,輸入數據,顯示結果,引入中介者,在中介者內部進行數據的判斷,并將結果輸出,如果此時需要增加新的選項,直接在中介者內部書寫業務代碼即可。

總結

有中介者和同事類,中介者通過get和set方法將同事傳入,然后進行數據的交換,中介完成任務,然后同事類,通過構造方法將中介傳入,然后和中介進行交流,獲取信息。
中介,get,set傳入同事,進行數據處理,交換。
同事,通過構造傳入,進行和中介通信。

總結

以上是生活随笔為你收集整理的设计模式-行为型模式-中介者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。