居間協調者模式

將物件之間的複雜溝通和控制方式簡化。

書本範例:當BOB按了打盹按鈕

1.鬧鐘要告訴咖啡壺煮咖啡

2.周末不煮咖啡

3.洗澡前關閉灑水器15分鐘

4.丟垃圾的日子鬧鐘設定提前

...

...

鬧鐘

onEvent(){
    checkCakebdar() //檢查日曆
    checkSprinkler() //檢查灑水器
    startCofee() //開始煮咖啡
    //更多...

}

咖啡

onEvent(){
    checkCakebdar() //檢查是否周末
    checkSAlarm()//檢查鬧鐘
    //更多...

}

日曆

onEvent(){
    checkDayOfWeek() //是不是周末
    doSprinkler() //灑水
    doCoffee() //做咖啡
    doAlarm()  //鬧鐘響
    //更多...
}

灑水器

onEvent(){
    checkCalendar() //檢查日曆
    checkShower() //檢查洗澡前
    checkTemp() //檢查溫度
    checkWeather() //檢查天氣
    //更多...

}

.

加入居間協調者

協調者

if(alarmEvent){ //鬧鐘事件
    checkCalendar() //檢查灑水器
    checkShower() //檢查洗澡前 
    checkTemp() //檢查溫度
    //更多...
}
if(weekend){ //假日
    checkWeather()
    //更多...
}
if(trashDay){ //到垃圾日子
    resetAlarm() //設定鬧鐘
    //更多...
}
  • 每個物件都會在自己的狀態改變時,通知居間協調者

  • 每個物件都會對協調者所發出的請求做出回應

居間協調者優點:

分工明確,物件間彼此都不知道對方的存在,物件重複利用的可能性大增。

控制邏輯集中,可以簡化系統維護。

居間協調者缺點:

隨著專案日漸龐大,function 也會越來越難以維護。

results matching ""

    No results matching ""