ฉันอาจประสบปัญหาประเภทใดหากฉันไม่ใช้รูปแบบการออกแบบซอฟต์แวร์ คุณสามารถบอกฉันเกี่ยวกับปัญหาของการเข้าใกล้การออกแบบโดยใช้เทคนิคการเชิงวัตถุมาตรฐานได้หรือไม่?
ฉันอาจประสบปัญหาประเภทใดหากฉันไม่ใช้รูปแบบการออกแบบซอฟต์แวร์ คุณสามารถบอกฉันเกี่ยวกับปัญหาของการเข้าใกล้การออกแบบโดยใช้เทคนิคการเชิงวัตถุมาตรฐานได้หรือไม่?
คำตอบ:
คุณไม่มีจุด
รูปแบบการออกแบบมีอยู่โดยกำเนิดเมื่อทำการออกแบบซอฟต์แวร์เช่นเดียวกับรูปแบบโครงสร้างที่มีอยู่ในโลก แม้ว่าคุณจะไม่รู้ชื่อของสิ่งต่าง ๆ ในที่สุดคุณก็จะพบว่าโครงสร้างทางกายภาพบางอย่างเหมาะสำหรับปัญหาบางอย่าง คุณจะพบว่ารูปสามเหลี่ยมของแท่งไม้ / โลหะ / ฯลฯ เป็นโครงสร้างที่มั่นคงมาก แต่บนเครื่องบินเท่านั้น คุณจะพบว่าอิฐสี่เหลี่ยมจัตุรัสมีข้อได้เปรียบเหนือก้อนกลม ...
ในทำนองเดียวกันโครงสร้างซอฟต์แวร์บางอย่างมีลักษณะเฉพาะหรือดีที่สุด ในที่สุดคุณจะพบพวกเขาและใช้พวกเขาโดยไม่คำนึงว่าคุณรู้จักชื่อพวกเขาหรือไม่ นั่นคือแกนหลักของรูปแบบการออกแบบ - เป็นชื่อสำหรับโครงสร้างเหล่านี้ที่โปรแกรมเมอร์ผู้มีประสบการณ์รู้จักและใช้งานอยู่แล้ว มันทำให้โปรแกรมเมอร์มีความสามารถในการสื่อสารมากขึ้นอย่างสม่ำเสมอและรัดกุม นอกจากนี้ยังช่วยให้โปรแกรมเมอร์คิดในแนวคิดของรูปแบบที่มีสติมากขึ้น
ดังนั้นประเด็นสำคัญสองข้อที่ฉันพยายามทำ:
คนที่จำอดีตไม่ได้ถูกประณามให้ทำซ้ำ
คุณจะไม่ประสบปัญหาเฉพาะใด ๆ นอกเหนือจากปัญหาที่เกิดขึ้นจากการออกแบบของคุณ และในเวลาที่คุณจะจบลงด้วยการใช้รูปแบบโดยไม่รู้ตัวคุณเพียงแค่ใช้เวลาหามันด้วยตัวเอง การรู้รูปแบบล่วงหน้าทำให้ง่ายต่อการมองเห็นในการออกแบบและรับประโยชน์ที่สำคัญที่พวกเขาได้รับการพิสูจน์โดยบุคคลจำนวนมาก
ทุกสิ่งที่ได้รับการพัฒนาในวันนี้ขึ้นอยู่กับความรู้ที่ผ่านมาส่วนใหญ่จะไม่มีเหตุผลที่จะเพิกเฉย ลองนึกภาพการสร้างตึกระฟ้าในวันนี้โดยไม่ทราบว่าต้องเผชิญกับปัญหาที่เกิดจากคนที่สร้างมหาวิหารเมื่อหลายร้อยปีก่อน
ฉันอาจประสบปัญหาประเภทใดหากฉันไม่ใช้รูปแบบการออกแบบซอฟต์แวร์
คุณจะมีปัญหาในการไม่สามารถเขียนซอฟต์แวร์ใด ๆ
ตัวแปรเป็นรูปแบบการออกแบบ
วิธีการเป็นรูปแบบการออกแบบ
ผู้ประกอบการ - นอกจากนี้การลบ ฯลฯ - เป็นรูปแบบการออกแบบ
งบเป็นรูปแบบการออกแบบ
ค่าเป็นรูปแบบการออกแบบ
การอ้างอิงเป็นรูปแบบการออกแบบ
นิพจน์เป็นรูปแบบการออกแบบ
คลาสเป็นรูปแบบการออกแบบ
...
ทุกสิ่งที่คุณทำในการเขียนโปรแกรมทุกครั้งที่เป็นรูปแบบการออกแบบ เวลาส่วนใหญ่ลวดลายนั้นฝังลึกในความคิดของคุณจนคุณหยุดคิดว่าเป็น "รูปแบบการออกแบบ" สิ่งที่คุณต้องเรียนรู้เช่น "รูปแบบซิงเกิล" และอื่น ๆ เป็นเพียงรูปแบบที่ยังไม่ได้รับการอบเป็นภาษาที่คุณใช้
คุณสามารถบอกฉันเกี่ยวกับปัญหาของการเข้าใกล้การออกแบบโดยใช้เทคนิคการเชิงวัตถุมาตรฐานได้หรือไม่?
ไม่ฉันไม่รู้ว่าคำถามนี้หมายถึงอะไร รูปแบบการออกแบบเป็น "เทคนิคเชิงวัตถุมาตรฐาน" - นั่นคือสิ่งที่ทำให้พวกเขามีรูปแบบการออกแบบ รูปแบบการออกแบบเป็นเทคนิคมาตรฐานสำหรับการแก้ปัญหาเฉพาะโดยเฉพาะอย่างยิ่ง (แม้ว่าไม่จำเป็น ) ในภาษาเชิงวัตถุ
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- นั่นคือ (เกือบ) นิยามของรูปแบบการออกแบบ - การสร้างโค้ดที่ยืดหยุ่น / นำมาใช้ซ้ำได้ง่ายที่ใช้ในการเอาชนะข้อ จำกัด ในภาษานั้นเป็นเรื่องง่ายที่จะสื่อสารกับผู้อื่น เมื่อเป็นส่วนหนึ่งของภาษาแล้วจะไม่มีรูปแบบการออกแบบอีกต่อไป
การทำความเข้าใจกับจุดของรูปแบบการออกแบบนั้นสำคัญกว่าการใช้มันกับตัวอักษร รูปแบบบางอย่าง IMO โง่อย่างน้อยก็ในกระบวนทัศน์ทางภาษาที่ฉันคุ้นเคย IMO โปรแกรมเมอร์ที่ใช้รูปแบบการออกแบบแบบสุ่มสี่สุ่มห้าและไม่มีความเข้าใจจริงๆพวกเขาเป็นโปรแกรมเมอร์ที่แย่กว่าคนที่คิดจะทำสิ่งต่าง ๆ ด้วยตนเอง แต่ใครบางคนที่คุ้นเคยกับความคิดและตัดสินใจด้วยตัวเองว่าพวกเขามีค่าควรหรือไม่น่าจะเป็นโปรแกรมเมอร์ที่เก่งกว่า
@ กล่าวว่าฉันไม่มีความคิด! @ # $ คิดว่าจุดของฟลายเวทคืออะไรและฉันไม่ละอายที่จะยอมรับ (ดูความคิดเห็นสำหรับรายการ wikipedia อื่นที่ช่วยได้มาก)
ฉันแนะนำรายการวิกิพีเดียในรูปแบบการออกแบบ มันกระชับและชัดเจนมาก มีประโยชน์มากสำหรับการทำความเข้าใจว่าทำไมบางคนอาจรำคาญกับรูปแบบการออกแบบที่กำหนดหรือไม่ โดยส่วนตัวแล้วฉันมักจะพบว่าสิ่งที่ง่ายที่สุดนั้นมีประโยชน์มากที่สุดและจะไม่คิดสองครั้งเกี่ยวกับการปรับใช้รูปแบบใด ๆ ก็ตามเพื่อให้เหมาะกับความต้องการของฉัน
เป็นแนวคิดไม่ใช่พิมพ์เขียว ในบางภาษาพวกเขาไม่ได้เป็นความคิดที่ดีนัก ในคนอื่น ๆ พวกเขาถูกมองว่าถูกต้องว่าเป็น kludges ในการเอาชนะจุดอ่อนในการออกแบบภาษาซึ่งอาจชดเชยได้ดีกว่าด้วยความซับซ้อนที่น้อยลง ไม่ว่าจะเป็นการตรวจสอบพวกเขาและพยายามทำความเข้าใจกับความท้าทายที่พวกเขาตั้งใจจะเอาชนะก่อนที่จะตัดสินใจเลือกวิธีแก้ปัญหาที่คุณต้องการ
คุณจะประสบปัญหาอะไรบ้าง คุณอาจพลาดโอกาสและใช้เวลากับปัญหามากกว่าที่คุณต้องการเว้นแต่คุณจะเป็นผู้เชี่ยวชาญด้านการเขียนโปรแกรมที่เข้าใจแล้วทั้งหมด สิ่งสำคัญคือการรักษาความคิดที่สำคัญของแนวคิดการเขียนโปรแกรมยอดนิยม แต่ไม่เคยเจ็บที่จะเข้าใจว่าคนคิดว่าพวกเขากำลังแก้ปัญหาอะไรเพราะจะให้ความกระจ่างกับโซลูชั่น / แนวทางที่คุณต้องการ
ปัญหาหลักที่คุณต้องเผชิญก็คือคุณจะต้องปรับแต่งวงล้อใหม่ พวกเขาจะเรียกว่ารูปแบบเพราะพวกเขาปรากฏขึ้นบ่อยครั้งและในลักษณะที่คาดการณ์ได้
แม้ว่าคุณจะทำตามรูปแบบการออกแบบคุณอาจท้ายด้วยการออกแบบที่ไม่ดี รูปแบบการออกแบบเป็นธรรมชาติและคุณจะได้ใช้รสชาติในการออกแบบของคุณ คุณจะต้องพยายามอย่างหนักจริงๆที่จะไม่ใช้รูปแบบใด ๆ ไม่มีเหตุผลที่จะกล่าวโทษรูปแบบการออกแบบสิ่งที่สำคัญกว่าคือการเลือกรูปแบบที่เหมาะสมกับความต้องการของคุณ
คุณใช้รูปแบบการออกแบบอยู่ตลอดเวลาโดยที่ไม่ทราบ ห้องสมุดมาตรฐานจำนวนมากในภาษายอดนิยมได้รับการออกแบบโดยคำนึงถึงรูปแบบการออกแบบ ตัวอย่างคือ Java ของFileReader
ห้องสมุดซึ่งถูกออกแบบโดยใช้รูปแบบการออกแบบมัณฑนากร ตอนนี้พูดถึงรหัสของคุณเองคุณไม่ได้ถูกบังคับให้ใช้รูปแบบการออกแบบ (ในกรณีส่วนใหญ่) รูปแบบการออกแบบคือ"วิธีแก้ปัญหาที่เกิดขึ้นซ้ำได้"ซึ่งหมายความว่ามันจะช่วยให้คุณเขียนโค้ดที่รักษาได้ดียิ่งขึ้นดังนั้นมันขึ้นอยู่กับคุณว่าคุณต้องการหลีกเลี่ยงการปิดท้ายด้วยรหัสสปาเก็ตตี้