摘要:中介者模式就是簡(jiǎn)化這種關(guān)系的模式,有兩個(gè)角色關(guān)系成員中介者。成員,不必包含與他有關(guān)系的成員,他只需包含一個(gè)中介者,通過(guò)中介發(fā)消息,是委托給中介。他有一個(gè)發(fā)消息的方法,中介通過(guò)判定成員來(lái)確定恢復(fù)消息。
先看圖:
中介者模式就是簡(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
摘要:里氏替換原則里氏代換原則面向?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); 本文為本次系列文章的第一篇,接下...
摘要:里氏代換原則里氏代換原則面向?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í)候,不...
摘要:十開(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...
摘要:推文用設(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...
摘要:本題目的考察點(diǎn)在于函數(shù)的格式輸出規(guī)則。方法改變隨機(jī)數(shù)生成器的種子,可以在調(diào)用其他隨機(jī)模塊函數(shù)之前調(diào)用此函數(shù)。參數(shù)改變隨機(jī)數(shù)生成器的種子。返回一個(gè)至區(qū)間包含和的整數(shù)。 ...
閱讀 2233·2021-10-14 09:43
閱讀 2261·2019-08-30 15:55
閱讀 788·2019-08-30 14:23
閱讀 2077·2019-08-30 13:21
閱讀 1294·2019-08-30 12:50
閱讀 2249·2019-08-29 18:46
閱讀 2341·2019-08-29 17:28
閱讀 2431·2019-08-29 17:21