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

歡迎訪問 生活随笔!

生活随笔

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

java

java 设计模式 示例_Java中的中介器设计模式-示例教程

發布時間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 设计模式 示例_Java中的中介器设计模式-示例教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 設計模式 示例

中介者模式行為設計模式之一 ,因此它處理對象的行為。 中介器設計模式用于在系統中不同對象之間提供集中式通信介質。 根據GoF,中介者模式意圖是:

通過封裝不同對象集相互交互和通信的方式,允許松散耦合。 允許每個對象集的動作彼此獨立地變化。

Mediator設計模式在企業應用程序中非常有用,在該應用程序中多個對象相互交互。 如果對象直接相互交互,則系統組件彼此緊密耦合,這使可維護性成本更高,并且難以靈活擴展。 調解器模式致力于在對象之間提供調解器以進行通信,并幫助實現對象之間的損耗耦合。

空中交通管制員是調解員模式的一個很好的例子,其中機場控制室充當不同航班之間通信的調解員。 中介器充當對象之間的路由器,并且可以具有自己的邏輯來提供通信方式。

相互通信的系統對象稱為同事。 通常,我們有一個提供通信契約的接口或抽象類 ,然后我們有介體的具體實現。

對于我們的示例,我們將嘗試實現一個聊天應用程序,用戶可以在其中進行群聊。 每個用戶都將通過其名稱進行標識,他們可以發送和接收消息。 該組中的所有其他用戶都應接收任何用戶發送的消息。

介體介面

首先,我們將創建Mediator接口,該接口將為具體的調解人定義合同。

package com.journaldev.design.mediator;public interface ChatMediator {public void sendMessage(String msg, User user);void addUser(User user); }

同事界面

用戶可以發送和接收消息,因此我們可以具有用戶界面或抽象類。 我創建用戶作為抽象類,如下所示。

package com.journaldev.design.mediator;public abstract class User {protected ChatMediator mediator;protected String name;public User(ChatMediator med, String name){this.mediator=med;this.name=name;}public abstract void send(String msg);public abstract void receive(String msg); }

請注意,用戶具有對中介對象的引用,這是不同用戶之間進行通信所必需的。

混凝土調解員

現在,我們將創建具體的調解器類,它將在組中具有用戶列表,并為用戶之間的通信提供邏輯。

package com.journaldev.design.mediator;import java.util.ArrayList; import java.util.List;public class ChatMediatorImpl implements ChatMediator {private List<User> users;public ChatMediatorImpl(){this.users=new ArrayList<>();}@Overridepublic void addUser(User user){this.users.add(user);}@Overridepublic void sendMessage(String msg, User user) {for(User u : this.users){//message should not be received by the user sending itif(u != user){u.receive(msg);}}}}

具體同事

現在,我們可以創建供客戶端系統使用的具體User類。

package com.journaldev.design.mediator;public class UserImpl extends User {public UserImpl(ChatMediator med, String name) {super(med, name);}@Overridepublic void send(String msg){System.out.println(this.name+": Sending Message="+msg);mediator.sendMessage(msg, this);}@Overridepublic void receive(String msg) {System.out.println(this.name+": Received Message:"+msg);}}

請注意,send()方法正在使用中介程序將消息發送給用戶,并且不知道中介程序將如何處理該消息。

中介者模式客戶端

讓我們用一個簡單的程序來測試我們的聊天應用程序,在該程序中,我們將創建調解器并將用戶添加到組中,并且其中一個用戶將發送一條消息。

package com.journaldev.design.mediator;public class ChatClient {public static void main(String[] args) {ChatMediator mediator = new ChatMediatorImpl();User user1 = new UserImpl(mediator, "Pankaj");User user2 = new UserImpl(mediator, "Lisa");User user3 = new UserImpl(mediator, "Saurabh");User user4 = new UserImpl(mediator, "David");mediator.addUser(user1);mediator.addUser(user2);mediator.addUser(user3);mediator.addUser(user4);user1.send("Hi All");}}

請注意,客戶端程序非常簡單,并且不知道如何處理消息以及中介程序是否正在獲得用戶。

上面程序的輸出是:

Pankaj: Sending Message=Hi All Lisa: Received Message:Hi All Saurabh: Received Message:Hi All David: Received Message:Hi All

中介者模式類圖

JDK中的中介者模式

  • java.util.Timer類scheduleXXX()方法
  • Java并發執行程序 execute()方法。
  • java.lang.reflect.Method invoke()方法。

重要事項

  • 當對象之間的通信邏輯很復雜時,調解器模式非常有用,我們可以擁有一個負責通信邏輯的中心通信點。
  • Java消息服務(JMS)使用Mediator模式和Observer模式來允許應用程序向其他應用程序訂閱和發布數據。
  • 我們不應該僅僅使用調解器模式來實現損失耦合,因為如果調解器的數量增加,那么將很難維持它們。

參考: Java中的介體設計模式– JCG合作伙伴 Pankaj Kumar在開發人員食譜博客上的示例教程 。

翻譯自: https://www.javacodegeeks.com/2013/08/mediator-design-pattern-in-java-example-tutorial.html

java 設計模式 示例

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java 设计模式 示例_Java中的中介器设计模式-示例教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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