[... ] ถ้าคุณสามารถเขียนโค้ดของคุณใน if / then cases?
นั่นคือประโยชน์ที่ยิ่งใหญ่ที่สุดของรูปแบบกลยุทธ์ ไม่มีเงื่อนไข
คุณต้องการให้คลาส / วิธีการ / ฟังก์ชั่นของคุณง่ายและสั้นที่สุด รหัสย่อนั้นง่ายต่อการทดสอบและอ่านง่ายมาก
เงื่อนไข ( if
/ elseif
/ else
) ทำให้ชั้นเรียนของคุณ / วิธีการ / ฟังก์ชั่นนานเพราะมักจะมีรหัสที่หนึ่งประเมินการตัดสินใจที่จะเป็นส่วนหนึ่งที่แตกต่างจากที่ประเมินการตัดสินใจที่จะtrue
false
ข้อดีอีกอย่างของรูปแบบกลยุทธ์คือสามารถใช้ซ้ำได้ตลอดทั้งโครงการของคุณ
เมื่อใช้รูปแบบการออกแบบกลยุทธ์คุณมีแนวโน้มที่จะมีคอนเทนเนอร์ IoC บางประเภทซึ่งคุณได้รับการนำไปใช้งานที่ต้องการของอินเทอร์เฟซบางทีโดยgetById(int id)
วิธีการที่สมาชิกid
อาจเป็นสมาชิกแจงนับ
ซึ่งหมายความว่าการสร้างการใช้งานจะอยู่ในที่เดียวในรหัสของคุณ
หากคุณต้องการเพิ่มการใช้งานเพิ่มเติมคุณเพิ่มการใช้งานใหม่ให้กับgetById
วิธีการและการเปลี่ยนแปลงนี้จะมีผลทุกที่ในรหัสที่คุณเรียกใช้
ด้วยif
/ elseif
/ else
สิ่งนี้เป็นไปไม่ได้ที่จะทำ โดยการเพิ่มการใช้งานใหม่คุณต้องเพิ่มelseif
บล็อกใหม่และทำทุกที่ที่มีการใช้งานหรือคุณอาจจบลงด้วยรหัสที่ไม่ถูกต้องเพราะคุณลืมที่จะเพิ่มการใช้งานให้กับโครงสร้างของมัน
นอกจากนี้มันหมายความว่าอัลกอริทึมที่จะเปลี่ยนที่รันไทม์?
ในตัวอย่างของฉันid
อาจเป็นตัวแปรที่บรรจุโดยอิงจากอินพุตของผู้ใช้ หากผู้ใช้คลิกที่ปุ่ม A, แล้วid = 2
ถ้าเขาคลิกที่ปุ่ม B id = 8
แล้ว
เนื่องจากid
ค่าที่แตกต่างกันการใช้งานอินเทอร์เฟซที่แตกต่างกันนั้นได้รับจากคอนเทนเนอร์ IoC และรหัสทำการดำเนินการที่แตกต่างกัน