คำถามนี้เป็นเวลาที่เหมาะสมสำหรับฉัน - ฉันกำลังเขียนรหัสเกือบเช่นเมื่อวานนี้ เพียงแค่แทนที่ "สัตว์" ด้วยสิ่งใดก็ตามที่เกี่ยวข้องในโครงการของฉันแม้ว่าฉันจะยึดติดกับ "สัตว์" เพื่อการอภิปรายที่นี่ แทนที่จะเป็นคำสั่ง 'เปลี่ยน' ฉันมีชุดคำสั่ง 'if' ที่ค่อนข้างซับซ้อนซึ่งเกี่ยวข้องมากกว่าเพียงแค่การเปรียบเทียบตัวแปรหนึ่งตัวกับค่าคงที่ที่แน่นอน แต่นั่นเป็นรายละเอียด วิธีการในโรงงานแบบคงที่ดูเหมือนจะเป็นวิธีที่ประณีตในการออกแบบสิ่งต่าง ๆ เนื่องจากการออกแบบเกิดขึ้นจากการปรับโครงสร้างโค้ดให้ยุ่งและรวดเร็ว
ฉันปฏิเสธการออกแบบนี้โดยอ้างอิงจากคลาสพื้นฐานที่มีความรู้เกี่ยวกับคลาสที่ได้รับมา หากคลาส LandAnimal และ SeaAnimal มีขนาดเล็กเรียบร้อยและใช้งานง่ายพวกเขาสามารถอยู่ในไฟล์ต้นฉบับเดียวกัน แต่ฉันมีวิธีการที่ยุ่งมากสำหรับการอ่านไฟล์ข้อความที่ไม่เป็นไปตามมาตรฐานที่กำหนดอย่างเป็นทางการ - ฉันต้องการคลาส LandAnimal ของฉันในไฟล์ต้นฉบับของตัวเอง
ที่นำไปสู่การพึ่งพาไฟล์แบบวงกลม - LandAnimal มาจากสัตว์ แต่สัตว์จำเป็นต้องรู้ว่ามี LandAnimal, SeaAnimal และอีกสิบห้าคลาส ฉันดึงวิธีการของโรงงานออกมาวางไว้ในไฟล์ของตัวเอง (ในแอปพลิเคชันหลักไม่ใช่คลังข้อมูลสัตว์ของฉัน) การใช้วิธีการแบบคงที่จากโรงงานดูน่ารักและฉลาด แต่ฉันรู้ว่ามันไม่ได้แก้ปัญหาการออกแบบจริงๆ
ฉันไม่รู้ว่าเรื่องนี้เกี่ยวข้องกับสำนวน C # อย่างไรเมื่อฉันเปลี่ยนภาษาบ่อยครั้งฉันมักจะไม่สนใจสำนวนและการประชุมที่แปลกประหลาดกับภาษาและการพัฒนาที่อยู่นอกงานปกติของฉัน หากสิ่งที่ C # ของฉันอาจมีลักษณะ "pythonic" ถ้ามันมีความหมาย ฉันมีจุดมุ่งหมายเพื่อความชัดเจนทั่วไป
นอกจากนี้ฉันไม่ทราบว่าจะมีข้อได้เปรียบในการใช้วิธีการแบบคงที่จากโรงงานในกรณีของคลาสขนาดเล็กและเรียบง่ายที่ไม่น่าจะขยายในการทำงานในอนาคต - การมีทั้งหมดในไฟล์ต้นฉบับอาจเป็นสิ่งที่ดีในบางกรณี