成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

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

ztyzz / 3023人閱讀

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

先看圖:

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

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

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

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)系的成員,他只需包含一個(gè)中介者,通過(guò)中介發(fā)消息,是委托給中介。他有一個(gè)發(fā)消息的方法,中介通過(guò)判定成員來(lái)確定恢復(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);

    }

}

測(cè)試

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:只要不放棄,就沒(méi)有什么能讓自己退縮;只要夠堅(jiān)強(qiáng),就沒(méi)有什么能把自己打垮!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/7328.html

相關(guān)文章

  • 開(kāi)篇:十三設(shè)計(jì)模式的通俗理解

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

    morgan 評(píng)論0 收藏0
  • 記錄一些用來(lái)學(xué)習(xí)設(shè)計(jì)模式的博客及書(shū)籍:

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

    NSFish 評(píng)論0 收藏0
  • 機(jī)器視覺(jué)、模式識(shí)別庫(kù)匯總

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

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

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

    ShevaKuilin 評(píng)論0 收藏0
  • 全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python(2021年9月)備考筆記 第十二天

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

    Codeing_ls 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<