框架設計的粒度

2021-05-22 07:01:57 字數 733 閱讀 5050

先拿乙個常見的oa中的許可權管理舉例,常規的設計方式無非就是許可權、角色、人這三層,關係如下:

那麼這樣的許可權設計是可以基本滿足乙個oa的需要的,那麼只需要做乙個filter去進行許可權的控制就ok了。如果考慮到軟體的擴充套件性貌似也足夠用了。但是考慮一下顯示情況,如果上線之後許可權需要增加意味著什麼呢?首先新增許可權系統是可以滿足的,但是頁面是否新增?或者是頁面中需要新增新的功能?最後需要改變filter中的**呢?那麼我們在設計的時候為什麼不能再把粒度劃分的細一些呢。其實並不是很難想到

我們只需要將可控制的部分再細化一些。上面的資料結構只劃分到了許可權,但是許可權意味著什麼呢?意味著我們可以進行怎樣的控制。但是往往我們就不再去想怎麼控制了。那麼怎麼控制呢?其實無非就是我要執行怎樣的**。那麼我們現在把**一層以及所控制的資源也細分出來,就形成了下面的結構:

通過著些許的改變就使得之前的許可權管理程式設計了乙個由開發者的意願去自由的控制的乙個資料結構了。我們可以由資源來決定許可權的設定,也可以由於許可權的需求來增加資源。注意資源和操作是沒有物理關係的,但是去可以通過實際情況去編寫他們的關係(配置檔案),至於具體的實現可以通過反射機制或者beanshell來實現,這裡不做具體闡述,我只是想說明一種設計理念。

其實就像itil一樣,劃分的越細緻,成本就越高。但是同時我們卻可以提高專案可控性。這裡的可控性範圍很廣,包括:專案的擴充套件性、維護性和資源的復用。

其實配置檔案也是一種資源同樣可以記錄在「資源」表中,通過乙個成型的系統再生成並控制其它二級或者**的產品,形成乙個高度合理整合資源的平台。

MegEngine 框架設計

megengine框架設計 megengine 技術負責人許欣然將帶了解乙個深度學習框架是如何把網路的定義逐步優化並最終執行的,從框架開發者的視角來看待深度學習。背景 ai 浪潮一波又一波,彷彿不會演算法就落後於時代。深度學習框架處理了各種裝置的計算細節 求導 計算優化序列的工作,而在動態 靜態兩套...

測試框架設計

關於測試框架的好處,比如快速回歸提高測試效率,提高測試覆蓋率等這裡就不討論了。這裡主要討論自動化框架包含哪些內容,以及如何去設計乙個測試框架。1.什麼是自動化測試框架?它是由乙個或多個自動化測試基礎模組 自動化測試管理模組 自動化測試統計模組等組成的工具集合。以常見的前端ui測試為例,乙個測試框架大...

WCC框架設計

乙個好的框架,不僅能幫助程式開發節約很多時間,同時也能減少bug的引入。這個框架是在ssy同學的基礎上進行了一些改進 主要在於一下幾點 會隨著專案開發逐漸更新這篇文章 1.應用了反射機制,實現網路task的多型。2.應用mvc模式,獨立出資料model,讓activity更加專注在介面響應和基本的業...