責任鏈模式和觀察者模式

2021-08-20 08:06:46 字數 1594 閱讀 5405

避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接受請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。

通過下面例子,當辦公室失火,會通知倉庫的保安,保安會通知整個大樓。

抽象區域:

public abstract class zone

public void setparentname(zone parentname)

public void notifypare()

dosomething();

} abstract void dosomething();

}

具體實現類:

/**

* 辦公室

* @author jiahua**/

public class office extends zone

@override

void dosomething()

}/**

* 倉庫

* @author jiahua**/

public class warehouse extends zone

@override

void dosomething()

}/**

* 大樓

* @author jiahua**/

public class building extends zone

@override

void dosomething()

}

主類:

public static void main(string args)
責任鏈模式可以減少物件的鏈結,為物件責任分配增加了靈活性。該模式允許一組類作為乙個類來使用,並且在類的組合中,乙個類的事件可以傳送到另乙個類並由其處理。

定義物件間的一種一對多依賴關係,使得每當乙個物件改變狀態,則其相關依賴物件皆得到通知並被自動更新。

/**

* 觀察者介面

* @author jiahua

* */

inte***ce ilistenner

/**

* 通知觀察者

* @author jiahua

* */

class publisher

public void notifyalllistener()

}}

/**

* 觀察者的實現

* @author jiahua

* */

class listenerone implements ilistenner

}class listenertwo implements ilistenner

}class listenerthree implements ilistenner

public static void main(string args)
觀察者模式抽象了被觀察者與觀察者物件的連線,提供了廣播式的物件間通訊,並且容易增加新的觀察者物件。

設計模式 責任鏈模式 觀察者模式

職責鏈模式 chain of responsibility,又叫責任鏈 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。1 在職責鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈。2 請求...

觀察者模式和訂閱者模式

1 要有個存放訂閱的事件佇列 2 通過on去訂閱事件 3 emit去觸發事件 const fs require fs node的自帶模組 const path require path const resolve file console.log resolve age.txt let evento...

觀察者模式

觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...