在第一節中,我提出了一個最原始的需求,并定義了幾個接口。
在第二節中,我對這個需求進行了一些細化,設計了一個數據結構和一些基本的操作,可以滿足一些低層次的需求。在和 babituo 的討論中,他給我提出了一些更為具體和現實的需求,我想有必要再進一步進行抽象和設計。Babituo提到“如何針對動態創建的一篇文章進行權限的控制”,及其他一些概念對我很有啟發。
目標:簡單的核心、簡單的定制(程序或是配置)、對于常見的情況會有通用的模板。簡單的修改可以應付復雜的需求。學習struts。
首先是三個基本的元素:操作者(主)、操作(謂)、資源(賓)。
操作者指的是發出動作的主體,不一定指具體的人,也可以指一組人,或是指系統中的一個模塊,它應該是系統唯一的,具有唯一的ID值。
操作指對資源進行的動作,比如說打開、顯示等,同樣必須具有唯一的ID值。
資源指被操作的對象,可以指單個對象,比如某個菜單項;也可以指某組對象,比如某組菜單。當然這個某組菜單表現出來的也是單一的一個對象。
操作者權限的繼續
操作者的父級的權限是能被下級所繼續的,比如“小王”是“研發中心”的員工、那么除非明確說明某些權限是小王禁止使用的,研發中心所有的權限,小王都有。這里的繼續不是類的繼續,而只是業務方面的一個繼續或是包含的關系。
新建資源的權限分配,例如:新建文章的操作權限問題
對于新建的文章一般創建者會具有對這篇文章的所有操作權限,所以我設計兩個類:新聞類NewsType和新聞類文章類News。新聞類只有一個實例:newsType,它的子女“新聞A NewsA”是對象是“新聞News”的實例。這里子女NewsA并沒有從父親newsType中繼續什么功能。“新聞類”具有一接口init(),表明每生成一個實例,就進行一些初始化操作,這里我們可以定義自動將實例的操作權限賦給創建者。當然,這需要定制程序。
新建的操作者的權限分配
這個和新建資源的權限分配類似,對于某操作者類會有一接口init(),描述新建一個實例時所要進行的操作。
操作的組合
例如對于一篇文章的查看、修改、刪除操作統稱為對一篇文章的治理操作,具有對一篇文章治理操作的權限同時也具有對這篇文章查看、修改、刪除的權限。
新聞熱點
疑難解答