2016-11-06 66 views

回答

3

它們之間的差異是所需同步的性質。

在觀察者模式的情況下,當觀察對象發生利益變化時,立即通知所有觀察者。因此模式需要立即進行每次更改同步。實際上,觀察者模式不需要不同的線程。正在改變觀察對象的線程可以通知所有註冊的觀察者。

但是,在生產者 - 消費者的情況下,唯一需要的同步是消費者在沒有元素時必須等待,並且當緩衝區已滿時生產者必須等待。但是不需要每個對象同步。生產者可以在消費者消費任何消費者之前產生多個對象,並且消費者可以一次消費多個對象。所以這裏不需要像觀察者那樣的即時通知。

就實施而言,您可以查看維基百科的文章:Observer PatternProducer-Consumer Problem

+0

謝謝你的解釋,我有問題: - 是否有可能在單個java程序中應用這兩個概念? –

+0

爲什麼不呢?真實世界的應用程序非常龐大,因此他們可以在單個程序中應用幾十個這樣的概念。 – taskinoor