欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

行為型模式:中介者模式

文章首發(fā)
行為型模式:中介者模式

十載的祁門網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整祁門建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“祁門網(wǎng)站設(shè)計”,“祁門網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

行為型模式:中介者模式

十一大行為型模式之二:中介者模式。

簡介

姓名:中介者模式

英文名:Mediator Pattern

價值觀:讓你體驗中介是無所不能的存在

個人介紹

Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.
用一個中介對象封裝一系列的對象交互,中介者使各對象不需要顯示地相互作用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。
(來自《設(shè)計模式之禪》)

你要的故事

看了這小伙子的名字,大家會很直觀的想到那些拿了我們半個月租的租房中介同學(xué)。在這不講講房租中介同學(xué),以后可沒機會了。大家現(xiàn)在找房子,不管是買還是租,一登錄什么安居客、58同城,是不是有 80% 是經(jīng)紀(jì)人房源,說 80% 還是比較保守的,經(jīng)歷了 4 次找房,發(fā)現(xiàn)個人房源越來越少。每個網(wǎng)站都有個選項:經(jīng)紀(jì)人房源。如下圖:

行為型模式:中介者模式

(圖片截自:安居客網(wǎng)站)

經(jīng)紀(jì)人就扮演著中介的角色,和本文要講的中介者模式完全吻合。我們在找房子的時候,經(jīng)紀(jì)人扮演什么角色呢?我們通過個人房源和經(jīng)紀(jì)人房源的租房案例來簡單描述經(jīng)紀(jì)人的角色。

個人房源

我們通過個人房源找房子的方式是這樣的:在網(wǎng)上找個人房源的房東,然后挨個聯(lián)系,和房東約定好時間去看房,我們跟房東的關(guān)系是一對多的關(guān)系。小明就在網(wǎng)上看了個人房源,聯(lián)系了房東,分別去看了農(nóng)民房和小區(qū)房,用代碼表示如下。

public class PersonalTest {

    public static void main(String[] args) {
        Tenant xiaoMing = new Tenant("小明");
        xiaoMing.lookAtHouse();
    }

}

class Tenant {
    private String name;
    private XiaoQuFangLandlord xiaoQuFangLandlord2 = new XiaoQuFangLandlord();
    private NongMinFangLandlord nongMinFangLandlord2 = new NongMinFangLandlord();

    public Tenant(String name) {
        this.name = name;
    }

    public void lookAtHouse() {
        System.out.println(this.name +"想看農(nóng)民房");
        nongMinFangLandlord2.supply();
        System.out.println(this.name + "想看小區(qū)房");
        xiaoQuFangLandlord2.supply();
    }

}

/**
 * 房東
 */
abstract class Landlord {
    // 提供房子
    public abstract void supply();
}

class XiaoQuFangLandlord extends Landlord {

    @Override
    public void supply() {
        System.out.println("小區(qū)房的房東提供一間小區(qū)房");
    }
}

class NongMinFangLandlord extends Landlord {

    @Override
    public void supply() {
        System.out.println("農(nóng)民房的房東提供一間小區(qū)房");
    }
}

打印結(jié)果如下:
小明想看農(nóng)民房
農(nóng)民房的房東提供一間小區(qū)房
小明想看小區(qū)房
小區(qū)房的房東提供一間小區(qū)房

小明分別聯(lián)系小區(qū)房的房東和農(nóng)民房的房東,然后依次去看了農(nóng)民房和小區(qū)房。這樣子有個弊端就是小明和房東是強關(guān)聯(lián)的關(guān)系,其實小明只是去看一下房,看完不想租就和房東沒啥關(guān)系了。這個時候經(jīng)紀(jì)人就派上用場了,經(jīng)紀(jì)人的主要任務(wù)就是把房子租出去,所以他和房東應(yīng)該是強關(guān)系,直到把房子成功租出去了,才和房東脫離關(guān)系,而小明也不用去挨個找房東看房子了,這個職責(zé)轉(zhuǎn)給經(jīng)紀(jì)人,小明只需要聯(lián)系一個人,那就是經(jīng)紀(jì)人,跟他說我要看小區(qū)房和農(nóng)民房,經(jīng)紀(jì)人就帶他去看。下面就介紹經(jīng)紀(jì)人房源的方式,也就是本文要講的中介者模式。

經(jīng)紀(jì)人房源

用經(jīng)紀(jì)人房源找房子,小明就省心很多了,小明就只聯(lián)系了一個經(jīng)紀(jì)人,跟他描述了自己要的房源:小區(qū)房和農(nóng)民房都可以,經(jīng)紀(jì)人里面和他約定了一個下午的時間,把小明所有想看的房讓他看完,最終小明決定租了一間房??创a。

public class MediatorTest {

    public static void main(String[] args) {
        System.out.println("小明想要看小區(qū)房和農(nóng)民房");
        Tenant2 xiaoMing = new Tenant2("小明", Arrays.asList("XiaoQuFang", "NongMinFang"));
        xiaoMing.lookAtHouse();
    }

}

/**
 * 租客
 */
class Tenant2 {
    private String name;
    private List<String> wantTypes;

    private RentingMediator rentingMediator = new RentingMediator();

    public Tenant2(String name, List<String> wantTypes) {
        this.name = name;
        this.wantTypes = wantTypes;
    }

    public void lookAtHouse() {
        rentingMediator.supplyHouse(wantTypes);
    }

}

/**
 * 中介抽象類
 */
abstract class Mediator {
    // 看房
    public abstract void supplyHouse(List<String> types);
}

/**
 * 租房中介
 */
class RentingMediator extends Mediator {

    private XiaoQuFangLandlord xiaoQuFangLandlord;
    private NongMinFangLandlord nongMinFangLandlord;

    public RentingMediator() {
        xiaoQuFangLandlord = new XiaoQuFangLandlord();
        nongMinFangLandlord = new NongMinFangLandlord();
    }

    @Override
    public void supplyHouse(List<String> types) {
        System.out.println("經(jīng)紀(jì)人提供了如下房源");
        if (types.contains("XiaoQuFang")) {
            xiaoQuFangLandlord.supply();
        }
        if (types.contains("NongMinFang")) {
            nongMinFangLandlord.supply();
        }
    }
}

打印結(jié)果:
小明想要看小區(qū)房和農(nóng)民房
經(jīng)紀(jì)人提供了如下房源
小區(qū)房的房東提供一間小區(qū)房
農(nóng)民房的房東提供一間小區(qū)房

在代碼中,我們可以看到小明和經(jīng)紀(jì)人是一對一關(guān)系,經(jīng)紀(jì)人和房東是一對多關(guān)系。小明找房經(jīng)歷也輕松多了,只花了一下午就把房子都看了并看中了。這也是中介者模式的優(yōu)點,減少了不必要的依賴,降低了類間的耦合。

代碼:
Mediator Pattern

總結(jié)

中介者模式通過在互相依賴的對象中間加了一層,讓原本強依賴的對象變成弱依賴。在軟件編程中,有一個中介者模式的典型的例子,就是 MVC 框架,也稱三層架構(gòu),通過 Controller (控制層) 將 Model (業(yè)務(wù)邏輯層) 和 View (視圖層) 的依賴給分離開,協(xié)調(diào) Model 和 View 中的數(shù)據(jù)和界面交互工作??纯茨愎ぷ髦械拇a,想想看有沒有哪些對象之間的關(guān)系特緊密特混亂,考慮是不是可以通過中介者模式來把依賴關(guān)系剝離,讓代碼更清晰。

推薦閱讀
單一職責(zé)原則(方法:修改名字還是密碼?接口:洗碗、買菜還是倒垃圾?類:注冊、登錄和注銷)
里氏替換原則(我兒來自新東方烹飪)
依賴倒置原則(摳門的飯店老板)
接口隔離原則(小伙子的作坊)
迪米特法則(手機上看電子書)
開閉原則(社保這點事)
創(chuàng)建型模式:單例模式(小明就只有 1 輛車)
創(chuàng)建型模式:工廠方法(小明家的車庫)
創(chuàng)建型模式:抽象工廠(寶馬車就得用寶馬輪胎和寶馬方向盤)
創(chuàng)建型模式:建造者模式(湯這么煲)
創(chuàng)建型模式:原型模式(復(fù)印書籍)
行為型模式:模板方法(運動鞋制造過程)

網(wǎng)頁題目:行為型模式:中介者模式
轉(zhuǎn)載來源:http://aaarwkj.com/article38/iidcsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗網(wǎng)站維護、電子商務(wù)自適應(yīng)網(wǎng)站、、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
18禁黄网站免费观看在线| 亚洲一区二区三区精品乱码| 中文字幕日韩有码在线| 日韩精品中文字幕有码| 国产99热这里只有精品| 日韩欧美亚洲自拍另类| 精品国产一区二区三区卡| 国产H精品在线观看| 国产精品自偷自偷自偷| 男人自拍天堂在线视频| 国产一区二区三区精品久久| 亚洲欧美日韩香蕉在线观看| 最新91精品国产自产在线| 日本高清不卡在线一区二区| 中文字幕av在线日韩| 国产又粗又长在线视频| 日韩国产精品一区二区| 日本免费一区二区三区等视频| 午夜在线成人免费观看| 久国产亚洲精品久久久极品| 日韩夫妻性生活免费视频| 久久青草精品欧美日韩精品| 亚洲不卡在线免费av| 一区二区三区日韩国产电影| 国产又猛又黄又爽无遮挡| 免费爱爱视频在线观看| 午夜香蕉av一区二区三区| 中文字幕不卡在线观看不卡| 国产精品一区巨乳人妻| 久久热在线视频精品视频| 国产熟女肥臀精品国产馆乱| 国产精品成人av在线网站| 人人爽久久爱夜夜躁一区| 亚洲一区二区三区av电影| 亚洲欧美国产精品久久久| 情五月激情亚洲丁香佳色| 亚洲欧美日韩有码一区| 日本少妇熟女一区二区| 亚洲精品在线观看日韩欧美| 日韩人妻中文字幕亚洲| 一区二区三区在线观看淫|