和過去的程式寫法差在哪裡 ?
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