機能フラグの概念と、このための人気のあるオープン ソース Java lib Togglzに出くわしました。これは、Martin Fowler のブログ投稿を引用しています。
基本的な考え方は、保留中のさまざまな機能の一連のトグルを定義する構成ファイルを用意することです。実行中のアプリケーションは、これらのトグルを使用して、新しい機能を表示するかどうかを決定します。
しかし、私には、これは本当に承認のように聞こえます。ユーザーはこのコンテンツを表示する権限がありますか?
たとえば、ユーザーが FizzBuzz メニューを表示できるようにする必要がありますか?
Togglz では、このチェックを次のように実装できます。
if(MyFeatures.ShowFizzBuzz.isActive()) {
// Show the FizzBuzz menu.
}
たとえば、Apache Shiro では、まったく同じことができます。
ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
// Show the FizzBuzz menu.
}
繰り返しになりますが、機能のフラグ付けは、役割または権限のチェックとまったく同じ問題のように感じます。
私は間違っていると確信していますが、方法がわかりません。そこで私は質問します: 機能のフラグ付けは、承認や役割/権限のチェックとどう違うのですか? また、この違いを例証する具体的なユースケースの種類は何ですか? 言い換えれば、承認/役割/許可チェックをいつ使用する必要があり、いつ機能フラグを使用する必要がありますか?