成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

設(shè)計模式(二十三)中介者模式

ztyzz / 2992人閱讀

摘要:中介者模式就是簡化這種關(guān)系的模式,有兩個角色關(guān)系成員中介者。成員,不必包含與他有關(guān)系的成員,他只需包含一個中介者,通過中介發(fā)消息,是委托給中介。他有一個發(fā)消息的方法,中介通過判定成員來確定恢復(fù)消息。

先看圖:

有很多孤立的人這里是3個,如果有100個,是不是圖很復(fù)雜,那在程序中表示出來就很難。明顯用右圖很明了。

中介者模式就是簡化這種關(guān)系的模式,有兩個角色:關(guān)系成員、中介者。我一般喜歡從語法上分析:

中介者:包含每一個關(guān)系成員,要處理所有的關(guān)系,就要包含是所有的成員。只有一個方法

abstract class Mediator {
    abstract void call(String string, Person person);
}

具體中介者:call是處理關(guān)系的,主要的方法。

public class AllMediator extends Mediator {
    Aperson aperson;
    Bperson bperson;
    Cperson cperson;

    

    public Aperson getAperson() {
        return aperson;
    }



    public void setAperson(Aperson aperson) {
        this.aperson = aperson;
    }



    public Bperson getBperson() {
        return bperson;
    }



    public void setBperson(Bperson bperson) {
        this.bperson = bperson;
    }



    public Cperson getCperson() {
        return cperson;
    }



    public void setCperson(Cperson cperson) {
        this.cperson = cperson;
    }



    @Override
    void call(String string, Person person) {
        if (person == aperson) {
            aperson.re(string);
        } else if (person == bperson) {
            bperson.re(string);
        } else if (person == cperson) {
            cperson.re(string);
        }

    }

}

成員,不必包含與他有關(guān)系的成員,他只需包含一個中介者,通過中介發(fā)消息,是委托給中介。他有一個發(fā)消息的方法,中介通過判定成員來確定恢復(fù)消息。

abstract class Person {
    String name;
    Mediator mediator;

    Person(String name, Mediator mediator) {
        this.mediator = mediator;
        this.name = name;
    }
    abstract void call(String mess);
    abstract void re(String mess);
    
}

A:

public class Aperson extends Person {

    Aperson(String name, Mediator mediator) {
        super(name, mediator);
    }

    @Override
    void call(String mess) {
        mediator.call(mess, this);

    }

    @Override
    void re(String mess) {
        System.out.println(name + ":" + mess);

    }

}

B:

public class Bperson extends Person {

    Bperson(String name, Mediator mediator) {
        super(name, mediator);
    }

    @Override
    void call(String mess) {
        mediator.call(mess, this);

    }

    @Override
    void re(String mess) {
        System.out.println(name + ":" + mess);

    }

}

C:

public class Cperson extends Person {

    Cperson(String name, Mediator mediator) {
        super(name, mediator);
    }

    @Override
    void call(String mess) {
        mediator.call(mess, this);

    }

    @Override
    void re(String mess) {
        System.out.println(name + ":" + mess);

    }

}

測試

class Test {

    public static void main(String[] args) {
        AllMediator mediator = new AllMediator();
        Aperson aperson = new Aperson("A同學(xué)", mediator);
        Bperson bperson = new Bperson("B同學(xué)", mediator);
        Cperson cperson = new Cperson("C同學(xué)", mediator);

        mediator.setAperson(aperson);
        mediator.setBperson(bperson);
        mediator.setCperson(cperson);

        aperson.call("告訴B,我明天不去了");
        bperson.call("告訴C,我明天不去了");

    }

}

結(jié)果:

A同學(xué):告訴B,我明天不去了

B同學(xué):告訴C,我明天不去了

note:只要不放棄,就沒有什么能讓自己退縮;只要夠堅強,就沒有什么能把自己打垮!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7328.html

相關(guān)文章

  • 開篇:十三設(shè)計模式的通俗理解

    摘要:里氏替換原則里氏代換原則面向?qū)ο笤O(shè)計的基本原則之一。里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。里氏代換原則是對開閉原則的補充。而基類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范。 showImg(https://segmentfault.com/img/bVbuXAu?w=640&h=361); 本文為本次系列文章的第一篇,接下...

    morgan 評論0 收藏0
  • 記錄一些用來學(xué)習設(shè)計模式的博客及書籍:

    摘要:里氏代換原則里氏代換原則面向?qū)ο笤O(shè)計的基本原則之一。里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。里氏代換原則是對開閉原則的補充。而基類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范。 一、設(shè)計模式的六大原則: 1、開閉原則(Open Close Principle) 開閉原則就是說對擴展開放,對修改關(guān)閉。在程序需要進行拓展的時候,不...

    NSFish 評論0 收藏0
  • 機器視覺、模式識別庫匯總

    摘要:十開放模式識別項目開放模式識別項目,致力于開發(fā)出一套包含圖像處理計算機視覺自然語言處理模式識別機器學(xué)習和相關(guān)領(lǐng)域算法的函數(shù)庫。 一、開源生物特征識別庫 OpenBROpenBR 是一個用來從照片中識別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計算機視覺庫 OpenCVOpenC...

    habren 評論0 收藏0
  • 忘了再看設(shè)計模式-行為型

    摘要:推文用設(shè)計模式解構(gòu)三國是一種什么體驗行為型設(shè)計模式一策略模式工廠模式優(yōu)化結(jié)構(gòu)狀態(tài)模式隨著狀態(tài)改變而改變行為。推文狀態(tài)機與狀態(tài)模式責任鏈模式多個對象依次處理請求前者指定后者。代理模式代理針對一個對象,為了增加控制等中介雙方都是多個,為了解耦。 策略模式 選擇使用封裝好的一系列算法,可相互替換。 類比:商店[Context]買完衣服買單[Stratege](現(xiàn)金[Concrete Stra...

    ShevaKuilin 評論0 收藏0
  • 全國計算機等級考試二級Python(2021年9月)備考筆記 第十二天

    摘要:本題目的考察點在于函數(shù)的格式輸出規(guī)則。方法改變隨機數(shù)生成器的種子,可以在調(diào)用其他隨機模塊函數(shù)之前調(diào)用此函數(shù)。參數(shù)改變隨機數(shù)生成器的種子。返回一個至區(qū)間包含和的整數(shù)。 ...

    Codeing_ls 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<