中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

淘寶網(wǎng)站建設(shè)哪個(gè)類(lèi)目/seo公司

淘寶網(wǎng)站建設(shè)哪個(gè)類(lèi)目,seo公司,物聯(lián)網(wǎng)技術(shù)是學(xué)什么的,青島知名設(shè)計(jì)公司中介者模式 中介者模式主要是將關(guān)聯(lián)關(guān)系由一個(gè)中介者類(lèi)統(tǒng)一管理維護(hù),一般來(lái)說(shuō),同事類(lèi)之間的關(guān)系是比較復(fù)雜的,多個(gè)同事類(lèi)之間互相關(guān)聯(lián)時(shí),他們之間的關(guān)系會(huì)呈現(xiàn)為復(fù)雜的網(wǎng)狀結(jié)構(gòu),這是一種過(guò)度耦合的架構(gòu),即…

中介者模式

中介者模式主要是將關(guān)聯(lián)關(guān)系由一個(gè)中介者類(lèi)統(tǒng)一管理維護(hù),一般來(lái)說(shuō),同事類(lèi)之間的關(guān)系是比較復(fù)雜的,多個(gè)同事類(lèi)之間互相關(guān)聯(lián)時(shí),他們之間的關(guān)系會(huì)呈現(xiàn)為復(fù)雜的網(wǎng)狀結(jié)構(gòu),這是一種過(guò)度耦合的架構(gòu),即不利于類(lèi)的復(fù)用,也不穩(wěn)定。例如在下左圖中,有六個(gè)同事類(lèi)對(duì)象,假如對(duì)象1發(fā)生變化,那么將會(huì)有4個(gè)對(duì)象受到影響。如果對(duì)象2發(fā)生變化,那么將會(huì)有5個(gè)對(duì)象受到影響。也就是說(shuō),同事類(lèi)之間直接關(guān)聯(lián)的設(shè)計(jì)是不好的。如果引入中介者模式,那么同事類(lèi)之間的關(guān)系將變?yōu)樾切徒Y(jié)構(gòu),從下右圖中可以看到,任何一個(gè)類(lèi)的變動(dòng),只會(huì)影響的類(lèi)本身,以及中介者,這樣就減小了系統(tǒng)的耦合。一個(gè)好的設(shè)計(jì),必定不會(huì)把所有的對(duì)象關(guān)系處理邏輯封裝在本類(lèi)中,而是使用一個(gè)專(zhuān)門(mén)的類(lèi)來(lái)管理那些不屬于自己的行為。
在這里插入圖片描述
定義: 又叫調(diào)停模式,定義一個(gè)中介角色來(lái)封裝一系列對(duì)象之間的交互,使原有對(duì)象之間的耦合松散,且可以獨(dú)立地改變它們之間的交互。中介者模式包含以下主要角色:

  • 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事對(duì)象注冊(cè)與轉(zhuǎn)發(fā)同事對(duì)象信息的抽象方法。

  • 具體中介者(ConcreteMediator)角色:實(shí)現(xiàn)中介者接口,定義一個(gè) List 來(lái)管理同事對(duì)象,協(xié)調(diào)各個(gè)同事角色之間的交互關(guān)系,因此它依賴(lài)于同事角色。

  • 抽象同事類(lèi)(Colleague)角色:定義同事類(lèi)的接口,保存中介者對(duì)象,提供同事對(duì)象交互的抽象方法,實(shí)現(xiàn)所有相互影響的同事類(lèi)的公共功能。

  • 具體同事類(lèi)(Concrete Colleague)角色:是抽象同事類(lèi)的實(shí)現(xiàn)者,當(dāng)需要與其他同事對(duì)象交互時(shí),由中介者對(duì)象負(fù)責(zé)后續(xù)的交互。

案例實(shí)現(xiàn)

【例】租房

現(xiàn)在租房基本都是通過(guò)房屋中介,房主將房屋托管給房屋中介,而租房者從房屋中介獲取房屋信息。房屋中介充當(dāng)租房者與房屋所有者之間的中介者。

類(lèi)圖如下:

在這里插入圖片描述

代碼如下:

首先租客和房東都是人,我們先定義Person抽象類(lèi),然后具體實(shí)現(xiàn)租客Tenant和房東HouseOwner類(lèi),代碼如下:

// 抽象類(lèi)
public abstract class Person {protected String name;protected Mediator mediator; // 持有一個(gè)中介者對(duì)象public Person(String name,Mediator mediator){this.name = name;this.mediator = mediator;}public abstract String getMessage(String msg);
}// 租客具體實(shí)現(xiàn)
public class Tenant extends Person{private String lease; // 租客租期public Tenant(String name,String lease, Mediator mediator) {super(name, mediator);this.lease = lease;}public String getMessage(String msg){System.out.println("我是租客,收到了中介發(fā)來(lái)的信息為:"+msg);return "我叫" + name +",我的想租"+lease;}
}// 房東具體實(shí)現(xiàn)
public class HouseOwner extends Person{private String address; // 房東房子地址public HouseOwner(String name,String address, Mediator mediator) {super(name, mediator);this.address = address;}//獲取信息public String getMessage(String msg){System.out.println("我是房東,收到中介發(fā)來(lái)的信息:"+msg);return "我叫" + name +",房子的位置是"+address;}
}

注意,上面的HouseOwnerTenant(都是同事類(lèi))都持有中介者對(duì)象,目的是讓亂七八糟的同事類(lèi)都和中介者類(lèi)進(jìn)行關(guān)聯(lián),而不是讓同事類(lèi)相互關(guān)聯(lián),后面進(jìn)行調(diào)用只需要通過(guò)中介者類(lèi)即可,下面定義中介者類(lèi):

// 抽象中介類(lèi)
public abstract class Mediator {private String name;public Mediator(String name){this.name = name;}public abstract String constact(String msg,Person person);
}// 中介類(lèi)具體實(shí)現(xiàn)
public class MediatorCompany extends Mediator{private HouseOwner houseOwner;private Tenant tenant;public MediatorCompany(String name) {super(name);}@Overridepublic String constact(String msg,Person person) {if(person instanceof HouseOwner){// 如果是房東return houseOwner.getMessage(msg);}if(person instanceof Tenant){// 如果是租客return tenant.getMessage(msg);}return null;}public HouseOwner getHouseOwner() {return houseOwner;}public void setHouseOwner(HouseOwner houseOwner) {this.houseOwner = houseOwner;}public Tenant getTenant() {return tenant;}public void setTenant(Tenant tenant) {this.tenant = tenant;}
}

上面的代碼只是維護(hù)了租客和房東兩個(gè)同事類(lèi),如果還有其他的同事類(lèi)例如開(kāi)發(fā)商、政府、A公司、B公司等,那么constact的邏輯就比較復(fù)雜了。但是優(yōu)點(diǎn)是將所有同事類(lèi)都關(guān)聯(lián)到一個(gè)中介者類(lèi)中,減少了同事類(lèi)之間的復(fù)雜關(guān)聯(lián)關(guān)系。下面要實(shí)現(xiàn)房東和組合的通信或者調(diào)用,只需要通過(guò)中介者實(shí)現(xiàn)類(lèi)即可,測(cè)試代碼如下:

public class Main {public static void main(String[] args) {// 中介公司MediatorCompany mediatorCompany = new MediatorCompany("王牌中介公司");// 實(shí)例化同事類(lèi)HouseOwner houseOwner = new HouseOwner("馬云", "杭州西溪阿里園區(qū)",mediatorCompany);Tenant tenant = new Tenant("馬化騰", "99年", mediatorCompany);mediatorCompany.setTenant(tenant);mediatorCompany.setHouseOwner(houseOwner);String msg1 = mediatorCompany.constact("你的房子什么情況呀?",houseOwner);System.out.println("房東回復(fù):"+msg1);String msg2 = mediatorCompany.constact("你想租多久呀?",tenant);System.out.println("租客回復(fù):"+msg2);}
}

結(jié)果輸出:

我是房東,收到中介發(fā)來(lái)的信息:你的房子什么情況呀?
房東回復(fù):我叫馬云,房子的位置是杭州西溪阿里園區(qū)
我是租客,收到了中介發(fā)來(lái)的信息為:你想租多久呀?
租客回復(fù):我叫馬化騰,我的想租99年

優(yōu)點(diǎn)

  • 松散耦合

    中介者模式通過(guò)把多個(gè)同事對(duì)象之間的交互封裝到中介者對(duì)象里面,從而使得同事對(duì)象之間松散耦合,基本上可以做到互補(bǔ)依賴(lài)。這樣一來(lái),同事對(duì)象就可以獨(dú)立地變化和復(fù)用,而不再像以前那樣“牽一處而動(dòng)全身”了。

  • 集中控制交互

    多個(gè)同事對(duì)象的交互,被封裝在中介者對(duì)象里面集中管理,使得這些交互行為發(fā)生變化的時(shí)候,只需要修改中介者對(duì)象就可以了,當(dāng)然如果是已經(jīng)做好的系統(tǒng),那么就擴(kuò)展中介者對(duì)象,而各個(gè)同事類(lèi)不需要做修改。

  • 一對(duì)多關(guān)聯(lián)轉(zhuǎn)變?yōu)橐粚?duì)一的關(guān)聯(lián)

    沒(méi)有使用中介者模式的時(shí)候,同事對(duì)象之間的關(guān)系通常是一對(duì)多的,引入中介者對(duì)象以后,中介者對(duì)象和同事對(duì)象的關(guān)系通常變成雙向的一對(duì)一,這會(huì)讓對(duì)象的關(guān)系更容易理解和實(shí)現(xiàn)。

缺點(diǎn)

當(dāng)同事類(lèi)太多時(shí),中介者的職責(zé)將很大,它會(huì)變得復(fù)雜而龐大,以至于系統(tǒng)難以維護(hù)。

使用場(chǎng)景

  • 系統(tǒng)中對(duì)象之間存在復(fù)雜的引用關(guān)系,系統(tǒng)結(jié)構(gòu)混亂且難以理解。
  • 當(dāng)想創(chuàng)建一個(gè)運(yùn)行于多個(gè)類(lèi)之間的對(duì)象,又不想生成新的子類(lèi)時(shí)。

參考內(nèi)容:

傳智播客設(shè)計(jì)模式相關(guān)筆記(主要)

http://www.risenshineclean.com/news/69.html

相關(guān)文章:

  • 做網(wǎng)站怎么偷源碼做網(wǎng)站/阿里seo排名優(yōu)化軟件
  • 電商網(wǎng)站建設(shè)與運(yùn)營(yíng)/網(wǎng)站管理
  • 文學(xué)投稿網(wǎng)站平臺(tái)建設(shè)/好f123網(wǎng)站
  • 做網(wǎng)站策劃需要用什么軟件/bt磁力搜索引擎在線(xiàn)
  • 沈陽(yáng)網(wǎng)站建設(shè)制作公司/友情鏈接怎么設(shè)置
  • 學(xué)校資源網(wǎng)站的建設(shè)方案/東莞seo推廣機(jī)構(gòu)帖子
  • 建設(shè)部資質(zhì)上報(bào)系統(tǒng)網(wǎng)站/重慶百度推廣優(yōu)化
  • 南昌網(wǎng)站建設(shè)哪家好/什么軟件可以推廣自己的產(chǎn)品
  • 個(gè)人網(wǎng)站 作品/站長(zhǎng)之家工具
  • 吳謹(jǐn)含廠家不愿做網(wǎng)站/平臺(tái)網(wǎng)站開(kāi)發(fā)公司
  • 網(wǎng)站項(xiàng)目策劃書(shū)實(shí)例/網(wǎng)絡(luò)推廣深圳有效渠道
  • wordpress 支持html5/網(wǎng)站標(biāo)題算關(guān)鍵詞優(yōu)化嗎
  • 在京東上怎樣做網(wǎng)站/免費(fèi)平臺(tái)推廣
  • 阿里自助建站平臺(tái)/網(wǎng)站優(yōu)化公司收費(fèi)
  • 如何建立一個(gè)網(wǎng)站分享教程/推廣賺傭金的軟件排名
  • 網(wǎng)站設(shè)計(jì)寬屏/品牌策略有哪些
  • 網(wǎng)站建設(shè)系統(tǒng)哪個(gè)好/seo點(diǎn)擊排名軟件營(yíng)銷(xiāo)工具
  • 建設(shè)文明網(wǎng) 聯(lián)盟網(wǎng)站的/學(xué)seo推廣
  • 武漢網(wǎng)站建設(shè) loongnet/百度云官網(wǎng)
  • 如何建設(shè)一個(gè)屬于自己的網(wǎng)站/引擎優(yōu)化seo
  • 南寧做網(wǎng)站外包/品牌宣傳策略有哪些
  • 怎樣做網(wǎng)站反鏈/北京網(wǎng)站優(yōu)化多少錢(qián)
  • 軟件外包收費(fèi)標(biāo)準(zhǔn)/重慶網(wǎng)站關(guān)鍵詞排名優(yōu)化
  • 網(wǎng)站建設(shè)ppt答辯/seo優(yōu)化包括什么
  • 網(wǎng)站建設(shè)網(wǎng)址網(wǎng)站制作/長(zhǎng)沙百度seo
  • 咸寧市住房和城鄉(xiāng)建設(shè)委員會(huì)網(wǎng)站/數(shù)字營(yíng)銷(xiāo)策劃
  • 給網(wǎng)站平臺(tái)做推廣叫什么/產(chǎn)品推廣平臺(tái)
  • 門(mén)戶(hù)網(wǎng)站源碼入駐/站長(zhǎng)之家收錄查詢(xún)
  • 國(guó)外b2b網(wǎng)站是什么意思/百度指數(shù)官網(wǎng)
  • 網(wǎng)站做支付需要準(zhǔn)備什么東西嗎/seo技術(shù)培訓(xùn)唐山