รวมวิธีการแม่แบบกับกลยุทธ์
การมอบหมายในวิชาวิศวกรรมซอฟต์แวร์ของฉันคือการออกแบบแอพพลิเคชั่นที่สามารถเล่นเกมในรูปแบบที่แตกต่างกันได้ เกมดังกล่าวคือ Mancala เกมเหล่านี้บางเกมเรียกว่า Wari หรือ Kalah เกมเหล่านี้แตกต่างกันไปในบางแง่มุม แต่สำหรับคำถามของฉันเป็นสิ่งสำคัญที่ต้องรู้ว่าเกมดังกล่าวอาจแตกต่างกันดังต่อไปนี้: วิธีการจัดการผลลัพธ์ของการย้าย วิธีการกำหนดจุดสิ้นสุดของเกม วิธีการตัดสินผู้ชนะ สิ่งแรกที่ฉันนึกถึงในการออกแบบสิ่งนี้คือการใช้รูปแบบกลยุทธ์ฉันมีการเปลี่ยนแปลงในอัลกอริทึม (กฎที่แท้จริงของเกม) การออกแบบอาจมีลักษณะเช่นนี้: จากนั้นฉันก็คิดกับตัวเองว่าในเกมของ Mancala และ Wari วิธีที่ผู้ชนะได้รับการตัดสินนั้นเหมือนกันและรหัสจะซ้ำกัน ฉันไม่คิดว่านี่เป็นคำจำกัดความที่ละเมิดหลักการ 'หนึ่งกฎที่เดียว' หรือหลักการของ DRY ที่เห็นว่าเป็นการเปลี่ยนแปลงในกฎสำหรับ Mancala ไม่ได้หมายความว่าจะต้องเปลี่ยนกฎใน Wari โดยอัตโนมัติเช่นกัน อย่างไรก็ตามจากข้อเสนอแนะที่ฉันได้รับจากอาจารย์ของฉันฉันได้รับความประทับใจในการค้นหาการออกแบบที่แตกต่าง ฉันมากับสิ่งนี้: แต่ละเกม (Mancala, Wari, Kalah, ... ) จะมีคุณลักษณะของประเภทของส่วนต่อประสานของกฏแต่ละตัวเช่นWinnerDeterminerหากมีรุ่น Mancala 2.0 ซึ่งเหมือนกับ Mancala 1.0 ยกเว้นว่าผู้ชนะจะตัดสินได้อย่างไร ใช้รุ่น Mancala ฉันคิดว่าการใช้กฎเหล่านี้เป็นรูปแบบกลยุทธ์นั้นใช้ได้อย่างแน่นอน แต่ปัญหาที่แท้จริงเกิดขึ้นเมื่อฉันต้องการออกแบบเพิ่มเติม ในการอ่านเกี่ยวกับรูปแบบวิธีการของแม่แบบฉันคิดได้ทันทีว่าสามารถนำไปใช้กับปัญหานี้ได้ การกระทำที่ทำเมื่อผู้ใช้ทำการย้ายจะเหมือนกันเสมอและในลำดับเดียวกันคือ: …