和過去的程式寫法差在哪裡 ?

Next/Error/Complete 這樣的模型其實與我們在Method 中使用 Try/Catch/Finally 或 Execute/Throw/Dispose是非常相似的,

所以我們在思考如何運用Rx 的時候,其實並沒有所謂的特殊情況或較為合適的情況,甚至是可以假想成FP在OOP上的一種實現,

所以才會有所謂的響應式編程 : 以下為轉換範例 :

我們可能會寫一個ServiceBuilder 像是SomeBuilder 這樣子透過BuilderOptions來設定Service 應該如何Build,並且在不再需要Builder的時候可以Dispose

public class ServiceBuilder : IServiceBuilder,IDisposable
{ 
    BuilderOptions options; 
    public ServiceBuilder(BuilderOptions options) 
    { 
        this.options = options; 
    }

    public Service Build() 
    {
        // build something...
    }

    protected Dispose(bool isDispose) 
    {
        //dispose callback or alert
        //dispose member...
    }

    public Dispose() 
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
}

如果把剛剛的ServiceBuilder寫成Method 的模型就會變成GetService,透過參數BuilderOptions來取得Service,並且透過Try,Catch,Finally來handle Exception

此時將Subscribe 的模型帶入GetService 將Service中的各區塊附加到 Subscribe上面

最後再以一個簡單的先後執行順序的ActionMerge來將從Subscribe來的與原本的邏輯重新執行過,最後在繼承Subscribe來些受這些合併後的Action,這樣就可以在GetService時,同時達到監控的效果,最後再進而將監控與實際回傳的Service邏輯合併後就是Rx了

Last updated