免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      動手寫一個中介者模式(Java版)實現(xiàn)房子出售和業(yè)主買房信息需求

      動手寫一個中介者模式(Java版)實現(xiàn)房子出售和業(yè)主買房信息需求

      模式定義與特點

      中介者(Mediator)模式的定義:定義一個中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合松散,且可以獨立地改變它們之間的交互。中介者模式又叫調(diào)停模式,它是迪米特法則的典型應(yīng)用。

      主要優(yōu)點如下

    1. 類之間各司其職,符合迪米特法則。
    2. 降低了對象之間的耦合性,使得對象易于獨立地被復(fù)用。
    3. 將對象間的一對多關(guān)聯(lián)轉(zhuǎn)變?yōu)橐粚σ坏年P(guān)聯(lián),提高系統(tǒng)的靈活性,使得系統(tǒng)易于維護和擴展。
    4. 主要缺點是

      中介者模式將原本多個對象直接的相互依賴變成了中介者和多個同事類的依賴關(guān)系。當(dāng)同事類越多時,中介者就會越臃腫,變得復(fù)雜且難以維護。

      模式的結(jié)構(gòu)與實現(xiàn)

      中介者模式實現(xiàn)的關(guān)鍵是找出“中介者”,下面對它的結(jié)構(gòu)和實現(xiàn)進行分析。

      1. 模式的結(jié)構(gòu)

    5. 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事對象注冊與轉(zhuǎn)發(fā)同事對象信息的抽象方法。
    6. 具體中介者(Concrete Mediator)角色:實現(xiàn)中介者接口,定義一個 List 來管理同事對象,協(xié)調(diào)各個同事角色之間的交互關(guān)系,因此它依賴于同事角色。
    7. 抽象同事類(Colleague)角色:定義同事類的接口,保存中介者對象,提供同事對象交互的抽象方法,實現(xiàn)所有相互影響的同事類的公共功能。
    8. 具體同事類(Concrete Colleague)角色:是抽象同事類的實現(xiàn)者,當(dāng)需要與其他同事對象交互時,由中介者對象負(fù)責(zé)后續(xù)的交互。
    9. 示例1,使用interface接口實現(xiàn)方式

      /** * @descript 這是一個中介者類 * 作用1 注冊同事類 * 作用2 負(fù)責(zé)同事類之前的轉(zhuǎn)發(fā)工作 * @author 79197 */public interface Intermediary01 {public void register(Colleague01 colleague);public void transmit(Colleague01 colleague);}public class Intermediary01Implement implements Intermediary01{private List colleagueObj=new ArrayList();//注冊同事類public void register(Colleague01 colleague) {if(!colleagueObj.contains(colleague)) {colleague.setIntermediary01(this);colleagueObj.add(colleague);}}//轉(zhuǎn)發(fā)public void transmit(Colleague01 colleague) {for(Colleague01 obj:colleagueObj) {if(!obj.equals(colleague) && !obj.typeobString.equals(colleague.typeobString)) {obj.receive(colleague.send());}}}}/** * @descript 這是一個同事類 * 作用1 定義不同各類,方便區(qū)分同事類 * 作用2 聚合中介者類 * 作用3 定義和其它同事類交互的類,即發(fā)送消息的類 * 作用4 定義接收其它同事類 * @author 79197 */abstract class Colleague01 {protected Intermediary01 intermediary01;String typeobString;String nameString;String sendStringparameter;public String getSendStringparameter() {return sendStringparameter;}public void setSendStringparameter(String sendStringparameter) {this.sendStringparameter = sendStringparameter;}public Colleague01(String typeobStringparameter,String nameStringparameter) {typeobString=typeobStringparameter;nameString=nameStringparameter;}public void setIntermediary01(Intermediary01 intermediary01temp) {this.intermediary01=intermediary01temp;}public abstract String send();public abstract void receive(String sendcontext);}public class Colleague01A extends Colleague01{public Colleague01A(String typeobStringparameter,String nameStringparameter) {super(typeobStringparameter, nameStringparameter);}String sendStringparameter;public String getSendStringparameter() {return sendStringparameter;}public void setSendStringparameter(String sendStringparameter) {this.sendStringparameter = sendStringparameter;}@Overridepublic String send() {System.out.println(“我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01B:發(fā)送信息是:”+getSendStringparameter());return “我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01A:發(fā)送信息是:”+getSendStringparameter();}@Overridepublic void receive(String sendcontext) {System.out.println(“我是”+this.typeobString+”方,昵稱是:”+this.nameString+”Colleague01A:接口信息是:”+sendcontext);}}public class Colleague01B extends Colleague01{public Colleague01B(String typeobStringparameter,String nameStringparameter) {super(typeobStringparameter, nameStringparameter);}String sendStringparameter;public String getSendStringparameter() {return sendStringparameter;}public void setSendStringparameter(String sendStringparameter) {this.sendStringparameter = sendStringparameter;}@Overridepublic String send() {System.out.println(“我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01B:發(fā)送信息是:”+getSendStringparameter());return “我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01B:發(fā)送信息是:”+getSendStringparameter();}@Overridepublic void receive(String sendcontext) {System.out.println(“我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01B:接口信息是:”+sendcontext);}}public class Colleague01C extends Colleague01{public Colleague01C(String typeobStringparameter,String nameStringparameter) {super(typeobStringparameter, nameStringparameter);}String sendStringparameter;public String getSendStringparameter() {return sendStringparameter;}public void setSendStringparameter(String sendStringparameter) {this.sendStringparameter = sendStringparameter;}@Overridepublic String send() {System.out.println(“我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01B:發(fā)送信息是:”+getSendStringparameter());return “我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01A:發(fā)送信息是:”+getSendStringparameter();}@Overridepublic void receive(String sendcontext) {System.out.println(“我是”+super.typeobString+”方,昵稱是:”+super.nameString+”Colleague01A:接口信息是:”+sendcontext);}}

      測試類

      public class IntermediaryTest {public static void main(String[] args) {Colleague01 sellerObj=new Colleague01A(“鏈家賣方”,”小明”);//sellerObj.setSendStringparameter(“長安街有一套上好的房源,正規(guī)3室一廳,感興趣的朋友可以私聊……”);Colleague01 buyerObj1=new Colleague01B(“業(yè)主”,”小張”);Colleague01 buyerObj2=new Colleague01C(“業(yè)主”,”小李”);buyerObj1.setSendStringparameter(“想購買一套房子”);Intermediary01 mediaryObj=new Intermediary01Implement();mediaryObj.register(sellerObj);mediaryObj.register(buyerObj1);mediaryObj.register(buyerObj2);mediaryObj.transmit(buyerObj1);}}

      示例2 抽象類的實現(xiàn)方式

      /** * @descript 這是一個中介者類 * 作用1 注冊同事類 * 作用2 負(fù)責(zé)同事類之前的轉(zhuǎn)發(fā)工作 * @author 79197 */abstract class Intermediary01 {abstract void register(Colleague01 colleague);abstract void transmit(Colleague01 colleague);}public class Intermediary01Implement extends Intermediary01{private List colleagueObj=new ArrayList();//注冊同事類public void register(Colleague01 colleague) {if(!colleagueObj.contains(colleague)) {colleague.setIntermediary01(this);colleagueObj.add(colleague);}}//轉(zhuǎn)發(fā)public void transmit(Colleague01 colleague) {for(Colleague01 obj:colleagueObj) {if(!obj.equals(colleague) && !obj.typeobString.equals(colleague.typeobString)) {obj.receive(colleague.send());}}}}

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
      (0)
      用戶投稿
      上一篇 2022年6月15日 15:26
      下一篇 2022年6月15日 15:26

      相關(guān)推薦

      • 房地產(chǎn)市場大蕭條或?qū)⒌絹恚W(xué)區(qū)房可能要涼了,請做好準(zhǔn)備

        回顧過去十年,房地產(chǎn)行業(yè)可以說是黃金歲月,買房的人群也是一波接著一波,從而把房地產(chǎn)這個行業(yè)推向了高潮,可以說在過去的十年當(dāng)中,幾乎沒有任何一行業(yè)可以比肩房地產(chǎn)行業(yè),也沒有任何房地產(chǎn)…

        2022年8月4日
      • Android新影像旗艦:OPPO Find X5 Pro 5G

        外觀設(shè)計——延續(xù)Find系列的獨樹一格 OPPO Find X5 Pro 5G 外觀上延續(xù)了 Find X3 Pro 的設(shè)計理念,再從各方面改進,看起來更加精致,獨特的設(shè)計不僅引人…

        2022年6月20日
      • 剛剛!快船首位交易對象出爐,特納愿意留隊,湖人拒交易30+6巨星

        北京時間7月31日,NBA自由市場正在進行,其中庫班表示,盧卡東契奇排在第二,只有二十歲的年齡,有美麗的女朋友,還喜歡打游戲,追夢格林透露,德羅贊要是來勇士我們能奪冠,但你沒來我們…

        2022年7月31日
      • 1克拉鉆戒價格算不算貴?買鉆戒送愛人多少預(yù)算合適?

        世界上有很多種表達愛情的方式,而想要讓那句“我愛你”變得富有儀式感,自然需要花費一些心力的。比如,挑選一枚能夠表示愛情信仰的鉆戒,用來和愛人彰顯自己的誠意和決心。那么,1克拉鉆戒價…

        2022年6月8日
      • 小天才涉黃暴背后:家長與孩子的戰(zhàn)爭

        小天才該做做減法了。 文 《中國企業(yè)家》記者 姚赟 編輯 米娜 頭圖來源 視覺中國 瞄準(zhǔn)家長焦慮痛點的小天才,現(xiàn)在自己也焦頭爛額了。 近日,小天才旗下多款產(chǎn)品引發(fā)爭議。前有電話手表…

        2022年8月6日
      • iPhone 14更多細(xì)節(jié)出爐,iPhone13價比百元機唱響讓路悲歌

        近日,萬眾關(guān)注的iPhone14系列新機正式發(fā)布。核心看點方面,iPhone 14 Pro和iPhone 14 Pro Max升級了4800萬像素的主鏡頭。 用戶打開RAW模式后,…

        2022年9月19日
      • https請求還需要對參數(shù)做簽名嗎

        https請求還需要對參數(shù)做簽名嗎?答案是需要的,但不必須。 https本身基于安全證書傳輸數(shù)據(jù),在數(shù)據(jù)傳輸過程中已經(jīng)對數(shù)據(jù)做了加密處理,但是他本身屬于傳輸層協(xié)議,所以只能保證傳輸…

        2022年6月22日
      • java面試題整理《多線程篇》七

        Thread、Runable和Callable 三者區(qū)別?Thread 是一個抽象類,只能被繼承,而 Runable、Callable 是接口,需要實現(xiàn)接口中的方法。繼承 Thre…

        2022年8月15日
      • 導(dǎo)航行業(yè)專題研究:組合導(dǎo)航迎自動駕駛大時代

        (報告出品方:興業(yè)證券) 1、衛(wèi)慣組合導(dǎo)航需求逐漸剛性,百億級市場已來臨 1.1、GNSS 與 IMU 融合可提供穩(wěn)定的絕對位置信息 全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)是能為地球表面或近…

        2022年8月12日
      • 聽老人講他心中的玫瑰

        在我很小的時候,我跟著蒼老的祖父來到一座山里去拜訪他的一位朋友。我們爬了一段崎嶇不平的山路,來到了一間破舊不堪的房子的前面。 在房子的前面有一道竹子做的籬笆,籬笆上掛滿了薔薇,鮮艷…

        2022年7月30日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息