簡體   English   中英

如何使用不可變對象替換觀察者模式

[英]How to use immutable objects to replace observer pattern

宣布Oo時,我感到很高興但事實證明,它不再屬於木制品了 建議的替換庫之一在其github頁面上對此進行了解釋,如下所示:

Web開發朝着功能編程和不可變對象的方向發展,因此這是我們所有人都應該關注的地方。

盡管最近我聽說過不可變的數據結構,但我仍然不知道如何使用它們來代替觀察者模式的功能。

不變的數據結構並不能完全取代觀察者模式的功能,它們只是使其變得多余。 不可變性只是表示“無法更改”,因此觀察者模式會告訴您對象何時更改,使用不可變對象意味着它們將永遠無法更改(如果您確實需要添加或刪除值,那么您將創建一個新的不可變對象對象),因此您無需擔心處理更改事件。 您可以使用Immutable.js來獲取不可變的Map或List或Stacks或其他復雜的數據結構(並且您可能希望在該頁面上閱讀不可變的案例 )。 或者,您可以使用普通的javascript(ES5.1中引入的Object.freeze函數)使對象文字不可變:

var o = { a: 99 };
Object.freeze(o); // make o immutable
o.a = 100; // a still equals 99, this assignment silently fails because o is immutable

我認為您誤解了這一信息。

不變的數據和觀察者(反應式編程)是很好的結合。 僅僅是Object.observe變得多余-如果Object不變,那么您在這里到底要observe什么?

鏈接到的庫是針對(尚未)支持Object.observe的ECMA標准的瀏覽器的兼容性補丁。 由於標准撤回了接口,因此該接口不再有效。 這並不意味着某人不能將其保留為庫,而只是意味着它不再是一個兼容性補丁。 這就是評論的意思,IMO。

在Javascript框架中進行更改及其檢測是關於該主題的不錯的閱讀。 最后一點,Om基本上討論了對不可變數據的反應方法,其中有很多鏈接需要進一步研究。 當然,我仍然建議您閱讀整篇文章-它很好地概述了狀態更改方法多年來的變化,因此,為您提供了所需的詳細信息-新方法解決了舊方法存在的問題( 50歲:P)范式。 請注意,只有狀態本身是不可變的-您可以很好地切換狀態,這就是您要觀察的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM