วิธีการตรวจสอบว่ารูปแบบการออกแบบถูกนำไปใช้อย่างถูกต้องหรือไม่


13

ฉันสามารถปรับขนาดแอปพลิเคชันเก่าทั้งหมดของฉันซึ่งไม่ได้ใช้รูปแบบการออกแบบที่บันทึกไว้ได้สำเร็จ ไม่ว่ามันจะเป็นลวดลายอะไร ในระดับใหญ่ฉันแค่รู้สึกว่าจำเป็นต้องใช้แนวคิด OOP แบบง่าย ๆ

แนวคิดรูปแบบการออกแบบนั้นซับซ้อนและเข้าใจยาก เมื่อดำเนินการแล้วจะตรวจสอบได้อย่างไรว่าการใช้งานนั้นถูกต้องและแอปพลิเคชั่นมีการเชื่อมต่อหลวมจริงหรือไม่?


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

2
@JoachimSauer สิ่งที่คุณเพิ่งพูดไปคือประเภทของสิ่งที่มหาวิทยาลัยด้านเทคนิคควรสอน ... เนื่องจากตอนนี้ฉันเป็นนักเรียนนี่เป็นสิ่งที่ทำให้ฉันโกรธมากที่สุด
Radu Murzea

1
@JoachimSauer ที่จริงแล้วความเข้าใจผิดนี้เกิดขึ้นเพราะมีเทคนิคการใช้งานที่หลากหลายสำหรับรูปแบบเดียวกัน ยกตัวอย่าง MVC และ MVP มีรูปแบบต่าง ๆ มากมายในรูปแบบเดียวกัน
RPK

@RPK +1 ความจริงที่ว่ามีคะแนนของรูปแบบ MVX (MVC, MVP, MVA, MVVM ฯลฯ ) ควรเป็นตัวบ่งชี้ที่ชัดเจนว่ามีวิธีการทำงานได้หลายอย่างเท่าเทียมกัน
MattDavey

คำตอบ:


3

เพื่อให้คำตอบสั้นกระชับฉันจะบอกว่าถ้ามีลักษณะดังต่อไปนี้ปรากฏในรหัสของคุณคุณสามารถมั่นใจได้ว่ารูปแบบอยู่ในสถานที่แม้ว่าคุณจะไม่ได้พยายามอย่างรอบคอบ (ซึ่งไม่ใช่ปัญหา)

ลักษณะที่ต้องการ:

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

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

  1. ย้อนกลับสร้างฐานรหัสของคุณเพื่อสร้าง UML daigrams เพียงเล็กน้อย
  2. เปรียบเทียบไดอะแกรมด้วยการอ้างอิงที่พร้อมใช้ของวัสดุอ้างอิงรูปแบบ

สิ่งนี้จะทำให้คุณมีความคิดที่เป็นธรรม


คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับอันที่สามได้ไหม?
Niing

19

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

รูปแบบการออกแบบ

แนวคิดของรูปแบบการออกแบบนั้นง่ายมากจริง ๆ : พวกเขาเป็นเพียงชุดของแม่แบบของวิธีจัดการกับปัญหาต่าง ๆ ที่พบบ่อย มี 2 ​​เหตุผลหลักที่พวกเขาได้รับความนิยม:

  1. พวกเขาเป็น 'พิสูจน์แล้ว': พวกเขามีการใช้งานมาก่อนหลายครั้งและรู้จักประโยชน์ / ข้อเสียของแต่ละคนโดยเฉพาะอย่างยิ่งปัญหาใด ๆ ที่อาจทำให้เกิดปัญหาใหญ่เป็นที่รู้จัก
  2. พวกเขาจัดเตรียมชุดคำศัพท์ทั่วไปและเปิดใช้งานการสื่อสารที่ง่ายขึ้น หากมีคนพูดว่า "class X มีบทบาทของผู้สังเกตการณ์ในรูปแบบของผู้สังเกตการณ์" จากนั้นนักพัฒนาที่คุ้นเคยกับรูปแบบนั้นสามารถเข้าใจได้ทันทีว่าเกิดอะไรขึ้น

คุณรู้ได้อย่างไรว่าคุณใช้งานถูกต้อง นั่นเป็นเรื่องยุ่งยาก สำหรับรูปแบบส่วนใหญ่เป็นเรื่องง่าย - คุณอาจ grokked หรือไม่ รูปแบบบางคนมีน้อยกว่าที่กำหนดไว้อย่างชัดเจนกว่าคนอื่น ๆ - เช่นรุ่น View-Controller รูปแบบเช่นนั้นถูกใช้เป็นแนวทางทั่วไปดีกว่า ข้อมูลเฉพาะของวิธีการที่คุณนำไปใช้นั้นมีความสำคัญน้อยกว่าการทำความเข้าใจถึงเหตุผลที่มีรูปแบบและสิ่งที่ต้องทำให้สำเร็จ

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

การมีเพศสัมพันธ์

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

มีหลายประเภทของการมีเพศสัมพันธ์ที่ระบุไว้ในมีบทความวิกิพีเดียนี้


2

คำตอบคือวัตถุประสงค์ที่คุณต้องการเขียนรูปแบบการออกแบบตั้งแต่เริ่มต้น ทำไมคุณต้องการความยืดหยุ่น?

นั่นคือการเปลี่ยนแปลง การเปลี่ยนแปลงข้อกำหนด ลองเปลี่ยนบางสิ่งในความต้องการของคุณที่สะท้อนถึงการเปลี่ยนรหัสและดูว่าวิธีการนี้ทำได้ง่าย / ยาก


-1

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

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


2
IMO การใช้รูปแบบการออกแบบไม่มีส่วนเกี่ยวข้องกับความสามารถในการปรับขนาด มันเป็นเพียงคำศัพท์เพื่อจดจำรูปแบบทั่วไปในโค้ดเพื่อให้เราสามารถพูดคุยเกี่ยวกับพวกเขา บ่อยครั้งที่การปรับขนาดแอปพลิเคชันอาจหมายถึงการออกแบบที่ดีซึ่งขัดต่อประสิทธิภาพ
Adrian Schneider
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.