避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接受請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。
通過下面例子,當辦公室失火,會通知倉庫的保安,保安會通知整個大樓。
抽象區域:
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 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...