เมื่อใดควรใช้รูปแบบการออกแบบใด? [ปิด]


104

ฉันชอบรูปแบบการออกแบบมาก แต่ฉันพบว่ามันยากที่จะเห็นเมื่อฉันสามารถนำไปใช้ ฉันได้อ่านเว็บไซต์จำนวนมากที่มีการอธิบายรูปแบบการออกแบบ ฉันเข้าใจมากที่สุด แต่ฉันพบว่ามันยากที่จะจดจำรูปแบบในสถานการณ์ของตัวเอง

นั่นคือเหตุผลที่ฉันถามคำถามนี้ มีแนวทาง / ระฆังเตือนเมื่อใดควรใช้รูปแบบการออกแบบใด

ตัวอย่างเช่นหากคุณกำลังทำคำสั่ง switch เพื่อพิจารณาว่าคุณต้องการสร้างวัตถุใดคุณอาจต้องการใช้รูปแบบการออกแบบจากโรงงาน ดังนั้นคำสั่งสวิตช์ในกรณีนี้คือ 'กระดิ่งเตือนภัย' เพื่อใช้รูปแบบโรงงาน

คุณรู้จัก 'ระฆังปลุก' มากขึ้นเพื่อกำหนดรูปแบบการออกแบบหรือไม่?


6
โดยปกติคำอธิบายรูปแบบที่ฉันเห็นจะมีคำอธิบายสถานการณ์ที่คุณต้องการใช้รูปแบบการออกแบบนั้น
R.Martinho Fernandes

คำตอบ:


99

โดยปกติกระบวนการจะเป็นวิธีอื่น ๆ อย่าไปมองหาสถานการณ์ที่จะใช้รูปแบบการออกแบบมองหาโค้ดที่สามารถปรับให้เหมาะสมได้ เมื่อคุณมีโค้ดที่คุณคิดว่ามีโครงสร้างไม่ถูกต้อง พยายามหารูปแบบการออกแบบที่จะช่วยแก้ปัญหา

รูปแบบการออกแบบมีขึ้นเพื่อช่วยคุณแก้ปัญหาเชิงโครงสร้างอย่าออกแบบแอปพลิเคชันของคุณเพียงเพื่อให้สามารถใช้รูปแบบการออกแบบได้


23
ไม่เพียง แต่ปัญหาเชิงโครงสร้างเท่านั้น แต่ยังรวมถึงปัญหาด้านพฤติกรรมและการสร้างสรรค์อีกด้วย
DevDemon

1
รูปแบบการออกแบบสามารถเร่งกระบวนการพัฒนาโดยจัดเตรียมกระบวนทัศน์การพัฒนาที่ผ่านการทดสอบและพิสูจน์แล้ว การออกแบบซอฟต์แวร์ที่มีประสิทธิภาพจำเป็นต้องพิจารณาถึงปัญหาที่อาจมองไม่เห็นจนกว่าจะนำไปใช้ในภายหลัง การนำรูปแบบการออกแบบกลับมาใช้ใหม่จะช่วยป้องกันปัญหาเล็กน้อยที่อาจทำให้เกิดปัญหาใหญ่และปรับปรุงการอ่านโค้ดสำหรับผู้เขียนโค้ดและสถาปนิกที่คุ้นเคยกับรูปแบบ
SaddamBinSyed

5

เรียนรู้พวกเขาอย่างช้าๆคุณจะสามารถปรับสภาพและคิดได้ว่าจะใช้เมื่อใด เริ่มจากอะไรง่ายๆอย่างรูปแบบซิงเกิลตัน :)

หากคุณต้องการสร้างหนึ่งอินสแตนซ์ของวัตถุและเพียงหนึ่งรายการ คุณใช้รูปแบบซิงเกิลตัน สมมติว่าคุณกำลังสร้างโปรแกรมด้วยอ็อบเจกต์ตัวเลือก คุณไม่ต้องการสิ่งเหล่านี้หลาย ๆ อย่างมันจะโง่ Singleton ทำให้แน่ใจว่าจะไม่มีมากกว่าหนึ่ง รูปแบบ Singleton นั้นเรียบง่ายใช้เยอะและได้ผลจริง


17
ซิงเกิลตันไม่ได้มีไว้สำหรับเมื่อคุณต้องการเพียงอินสแตนซ์เดียว Singleton มีไว้สำหรับเมื่อคุณต้องการจำกัดอินสแตนซ์เดียว เมื่อคุณต้องการเพียงอินสแตนซ์เดียวคุณสามารถลองสร้างเพียงอินสแตนซ์เดียวและใช้งานได้
R.Martinho Fernandes

นอกจากนี้ในขณะที่ซิงเกิลตันมีประโยชน์และจำเป็นในบางสถานที่ แต่ก็เป็นรูปแบบที่ง่ายมากที่จะนำไปใช้เมื่อไม่จำเป็น เมื่อคุณบอกใบ้ที่นี่และตามที่เฟอร์นันเดสชี้ให้เห็นคุณอาจไม่ต้องการมัน ตามความเป็นจริงการใช้รูปแบบซิงเกิลตันเป็นสัญญาณที่ดีของกลิ่นรหัสที่เป็นไปได้ (อาจ) การใช้สำหรับคลาสบริการเป็นไปได้มากกว่าที่จะเป็นกลิ่นรหัส ดูเหมือนว่าคุณต้องการ DI ไม่ใช่ซิงเกิลตัน บางคนใช้วิธีนี้ โดยเฉพาะอย่างยิ่งสำหรับรหัสขนาดเล็ก (ไม่สำคัญ) หรือ POC แต่อย่างที่บอกมีการใช้งานบางอย่างที่มีประสิทธิภาพ อย่าหาวิธีง่ายๆในการทำอะไรสักอย่างแล้วลงมือทำ
Suamere

4

ฉันเห็นด้วยอย่างยิ่งกับ @Peter Rasmussen

รูปแบบการออกแบบเป็นวิธีแก้ปัญหาทั่วไปสำหรับปัญหาการออกแบบที่เกิดขึ้นทั่วไป

ฉันต้องการให้คุณทำตามแนวทางด้านล่าง

  1. เข้าใจเจตนาของแต่ละรูปแบบ
  2. ทำความเข้าใจรายการตรวจสอบหรือกรณีการใช้งานของแต่ละรูปแบบ
  3. คิดหาวิธีแก้ปัญหาของคุณและตรวจสอบว่าโซลูชันของคุณอยู่ในรายการตรวจสอบของรูปแบบเฉพาะหรือไม่
  4. หากไม่เป็นเช่นนั้นให้เพิกเฉยต่อรูปแบบการออกแบบและเขียนโซลูชันของคุณเอง

ลิงค์ที่เป็นประโยชน์:

sourcemaking : อธิบายเจตนา , โครงสร้างและรายการตรวจสอบอย่างสวยงามในหลายภาษารวมทั้งภาษา C ++ และ Java

วิกิพีเดีย : อธิบายโครงสร้างแผนภาพ UML และตัวอย่างการทำงานในหลายภาษารวมถึง C # และ Java

ตรวจสอบรายการและกฎของหัวแม่มือในแต่ละรูปแบบการออกแบบที่มาของการออกแบบให้ระฆังอัลรัมที่คุณกำลังมองหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.