您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java設計模式之中介者模式怎么實現的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java設計模式之中介者模式怎么實現文章都會有所收獲,下面我們一起來看看吧。
Java中介者模式(Mediator Pattern)是一種行為設計模式,它可以降低多個對象之間的耦合性,通過一個中介者對象來協調這些對象的交互.
在中介者模式中,多個對象之間的交互不是直接進行的,而是通過一個中介者對象來進行的.這個中介者對象封裝了對象之間的交互邏輯,每個對象只需要與中介者對象進行通信,而不需要與其他對象直接進行通信.這種模式可以有效的減少代碼的復雜度和維護成本,提高系統的可擴展性和可維護性.
在Java中, 中介者模式可以通過一個接口或抽象類來定義中介者對象,該中介者對象可以定義一些方法來處理對象之間的通信.同時,需要實現一些具體的對象類,這些對象類需要持有中介者對象,并且需要實現一些方法來與中介者對象進行通信.通過這種方式,可以實現對象之間的解耦,提高代碼的可讀性和可維護性.
抽象中介者
public abstract class Mediator { public abstract void send(String message, Colleague colleague); }
具體中介者
public class ConcreteMediator extends Mediator{ private ConcreteColleague1 concreteColleague1; private ConcreteColleague2 concreteColleague2; public void setConcreteColleague1(ConcreteColleague1 concreteColleague1) { this.concreteColleague1 = concreteColleague1; } public void setConcreteColleague2(ConcreteColleague2 concreteColleague2) { this.concreteColleague2 = concreteColleague2; } @Override public void send(String message, Colleague colleague) { if (colleague == concreteColleague1){ concreteColleague2.receive(message); }else { concreteColleague1.receive(message); } } }
抽象同事類
public abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } /** * 發送消息 * * @param message */ public abstract void send(String message); /** * 消費消息 * @param message */ public abstract void receive(String message); }
具體同事類
public class ConcreteColleague1 extends Colleague { public ConcreteColleague1(Mediator mediator) { super(mediator); } /** * 發送消息 * * @param message */ @Override public void send(String message) { mediator.send(message, this); } /** * 消費消息 * * @param message */ @Override public void receive(String message) { System.out.println("concreteColleague1收到消息:" + message); } } public class ConcreteColleague2 extends Colleague { public ConcreteColleague2(Mediator mediator) { super(mediator); } /** * 發送消息 * * @param message */ @Override public void send(String message) { mediator.send(message, this); } /** * 消費消息 * * @param message */ @Override public void receive(String message) { System.out.println("concreteColleague2收到消息:" + message); } }
測試
public class Demo { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); ConcreteColleague1 concreteColleague1 = new ConcreteColleague1(mediator); ConcreteColleague2 concreteColleague2 = new ConcreteColleague2(mediator); mediator.setConcreteColleague1(concreteColleague1); mediator.setConcreteColleague2(concreteColleague2); concreteColleague1.send("Hello concreteColleague2"); concreteColleague2.send("Hello concreteColleague1"); } }
在上面代碼中,抽象中介者Mediator定義了同事類之間通信的接口,具體中介者類ConcreteMediator實現了這個接口,并持有同事類列表.抽象同事類Colleague定義了同事類的通信接口,具體同事類ConcreteColleague1和ConcreteColleague2分別實現了這個接口,實現了具體的通信邏輯.在測試代碼中,我們創建了一個中介者對象,然后創建了兩個同事對象并將他們加入到中介者對象的同事列表中,最后測試了它們之間的通信.
關于“Java設計模式之中介者模式怎么實現”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Java設計模式之中介者模式怎么實現”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。