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