设计模式-行为型模式-中介者模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式-行为型模式-中介者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計模式-行為型模式-中介者模式
行為型模式
劃分類和對象的職責。
中介者模式
進銷存管理,即采購,銷售,庫存。
其中類圖
代碼如下
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 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");} }銷售管理,類似不在闡述。
對于場景類進行修改如下
應用
MVC,網關,一個購物車栗子,需求為選擇顏色,并輸入購買數量,要求和從后臺獲取到的庫存進行對比,在頁面顯示。思路,為三方,庫存數據,輸入數據,顯示結果,引入中介者,在中介者內部進行數據的判斷,并將結果輸出,如果此時需要增加新的選項,直接在中介者內部書寫業務代碼即可。
總結
有中介者和同事類,中介者通過get和set方法將同事傳入,然后進行數據的交換,中介完成任務,然后同事類,通過構造方法將中介傳入,然后和中介進行交流,獲取信息。
中介,get,set傳入同事,進行數據處理,交換。
同事,通過構造傳入,進行和中介通信。
總結
以上是生活随笔為你收集整理的设计模式-行为型模式-中介者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: How to sign app
- 下一篇: 从今天开始,每天记录一点东西