ฉันเพิ่งสะดุดกับแนวคิดของการตั้งค่าสถานะคุณลักษณะ และ 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.
}
ขอย้ำอีกครั้งว่าฟีเจอร์การตั้งค่าสถานะเพียงให้ความรู้สึกเป็นปัญหาเดียวกันกับการตรวจสอบบทบาทหรือสิทธิ์
ฉันแน่ใจว่าฉันผิด แต่ฉันไม่เห็นวิธีการ ฉันจึงถามว่า: การตั้งค่าสถานะคุณลักษณะแตกต่างจากการอนุญาตและการตรวจสอบบทบาท/สิทธิ์อย่างไร และกรณีการใช้งานที่เป็นรูปธรรมประเภทใดที่เป็นตัวอย่างความแตกต่างนี้ กล่าวอีกนัยหนึ่ง: ฉันควรใช้การตรวจสอบการอนุญาต/บทบาท/การอนุญาต และเมื่อใดที่ฉันควรใช้แฟล็กคุณลักษณะ