我對面的特徵標記概念迷迷糊糊的,一個流行的開源Java的lib這個叫Togglz,其中引用了Martin Fowler的博客文章:功能檢舉VS授權
的基本思想是有一個配置文件,它定義了你有待處理的各種功能的一組切換。正在運行的應用程序然後使用這些切換來決定是否顯示新功能。
但對我來說,這真的聽起來像授權:被授權查看該內容的用戶?
例如,用戶應該能夠看到FizzBuzz菜單嗎?
在Togglz我會實現這個檢查,像這樣:
if(MyFeatures.ShowFizzBuzz.isActive()) {
// Show the FizzBuzz menu.
}
,比方說,阿帕奇四郎,我可以做同樣的事情:
ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
// Show the FizzBuzz menu.
}
再次,功能標記只是感覺與角色或許可檢查一樣具有相同的確切問題。
我敢肯定我錯了,但我看不出如何。所以我問:功能標記與授權和角色/權限檢查有什麼不同,以及具體用例的哪種類型可以說明這種差異?換句話說:何時應該使用授權/角色/權限檢查,以及何時應使用功能標誌?