วิธีการศึกษารูปแบบการออกแบบ? [ปิด]


352

ฉันได้อ่านหนังสือประมาณ 4-5 เล่มเกี่ยวกับรูปแบบการออกแบบ แต่ถึงกระนั้นฉันก็ยังไม่รู้สึกว่าฉันเข้าใกล้ระดับกลางในรูปแบบการออกแบบหรือไม่

ฉันจะไปศึกษารูปแบบการออกแบบได้อย่างไร

มีหนังสือที่ดีสำหรับลวดลายการออกแบบหรือไม่?

ฉันรู้ว่าสิ่งนี้จะมาพร้อมกับประสบการณ์เท่านั้น แต่ต้องมีวิธีที่จะเป็นหลักเหล่านี้หรือไม่


6
วิธีที่ดีที่สุดในการเรียนรู้รูปแบบการออกแบบคือการทำโครงงาน เมื่อคุณเห็นรูปแบบในโครงการคุณจะรู้ว่าจะใช้เมื่อใดที่นี่เป็นบทความที่สอนรูปแบบการออกแบบทีละขั้นตอนด้วยโครงการcodeproject.com/Articles/1009532/…
Shivprasad Koirala

1
ลองดูที่ Antipatterns เช่นกันdeviq.com/antipatterns
นักพัฒนา

คุณสามารถเรียนรู้ได้จากที่นี่play.google.com/store/apps/…
Keyur Thumar

อาจจะสาย แต่ก็อาจช่วยคนได้ลองgeeksforgeeks.org/software-design-patternsเพื่อทำความเข้าใจพื้นฐานและสถานการณ์ที่อธิบายว่าพวกเขาสามารถนำไปใช้ได้ที่ไหน ช่วยฉันเข้าใจรากฐานและวัตถุประสงค์ของแต่ละแบบ
zeetit

ดูเพิ่มเติมที่ Pluralsight: pluralsight.com/courses/patterns-library
ssmith

คำตอบ:


206

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

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


11
แน่นอน! ฉันถูกขบขันเสมอว่าซอฟต์แวร์ตกอยู่ภายใต้ "วิทยาศาสตร์คอมพิวเตอร์" ฉันเห็นอาร์กิวเมนต์ของฮาร์ดแวร์ แต่ซอฟต์แวร์สร้างมาเพื่อวิทยาศาสตร์ที่ไม่แม่นยำมาก!
Joseph Ferris

น่าเสียดายที่ทรัพยากรนี้ไม่สามารถใช้ได้อีก :(.

5
@ NielsW มันอาจจะเป็นเพียงชั่วคราวเท่านั้น
uthomas

211

ฉันอ่านหนังสือสามเล่มและยังไม่เข้าใจรูปแบบได้ดีจนกระทั่งฉันอ่านHead First Design Patternsโดย OReilly หนังสือเล่มนี้เปิดตาของฉันและอธิบายได้ดีจริงๆ

ข้อความแสดงแทน


14
ในตอนแรกมันแปลกเล็กน้อยที่ได้อ่านหนังสือ "จริงจัง" ที่มีลักษณะเช่นนั้น แต่เมื่อฉันอ่านต่อไปฉันสังเกตว่าฉันเข้าใจแนวคิดจริง ๆ เกี่ยวกับการเปลี่ยนแปลง อ่านแล้วคุ้มค่าแน่นอน
ทิม Whitcomb

18
ฉันคิดว่านี่เป็นหนังสือที่ดีที่สุดสำหรับการเรียนรู้เกี่ยวกับรูปแบบการออกแบบ ควรใช้หนังสือ GoF เป็นข้อมูลอ้างอิงหลังจากคุณเข้าใจดีขึ้น
Bill the Lizard

คุณพูดถึงคุณอ่านหนังสือ 3 เล่มคุณได้อ่านหนังสือเล่มนี้ด้วยหรือไม่ amazon.com/…ถ้าเป็นเช่นนั้นคุณคิดอย่างไร
sivabudh

11
ฉันได้พบกับ Erich Gamma (หนึ่งใน GoF) ในการประชุมที่ Nantes ประเทศฝรั่งเศสในปี 2549 และเขาบอกว่าหนังสือเล่มนี้กำลังขายหนังสือ GoF ที่ยอดเยี่ยม :)
Fuhrmanator

1
หลังจากอ่านหนังสือเล่มนี้แล้ว OO ก็เข้าท่า @SimpleFellow หนังสือ GoF นั้นน่าเบื่อ หากไม่มีความรู้มาก่อนเกี่ยวกับรูปแบบการออกแบบคุณจะสามารถนอนหลับได้ในเวลาไม่นาน อย่างไรก็ตามมันเป็นหนังสืออ้างอิงที่ดี ( และ ) และควรเป็นส่วนหนึ่งของห้องสมุดผู้เชี่ยวชาญพร้อม DDD และ P ของ EAA
mbx

93

สองเซ็นต์ของฉันสำหรับคำถามดังกล่าวและเก่า

บางคนพูดถึงแล้วฝึกและปรับโครงสร้างใหม่ ฉันเชื่อว่าคำสั่งที่ถูกต้องในการเรียนรู้เกี่ยวกับรูปแบบคือ:

  1. เรียนรู้การพัฒนาแบบทดสอบขับเคลื่อน (TDD)
  2. เรียนรู้การสร้างใหม่
  3. เรียนรู้รูปแบบ

คนส่วนใหญ่ไม่สนใจ 1 หลายคนเชื่อว่าพวกเขาสามารถทำได้ 2 และเกือบทุกคนตรงไปที่ 3

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

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

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


u สามารถแนะนำหนังสือบางเล่มสำหรับ TDD และ refactoring majorly ใน C ++
anand

2
คุณจะมีปัญหามากมายในการค้นหาเนื้อหาที่มีคุณภาพหากคุณ จำกัด ให้เหลือเพียง C ++ ยิ่งไปกว่านั้น C ++ ไม่ใช่ภาษาที่คุณต้องการเรียนรู้การทดสอบเพราะในทางเทคนิคมันขาดการสะท้อนซึ่งทำให้การสร้างเครื่องมือทดสอบที่ดีทำได้ยากมาก มันยังคงเป็นไปได้ แต่ชุมชนฟอรัมการสนทนาและจำนวนคน TDD นั้นเป็นส่วนน้อยภายใน C ++ เพราะสิ่งนั้น ฉันทำงานกับมันมาหลายครั้งแล้ว แต่ถึงแม้จะมีจุดแข็ง แต่ก็ไม่ใช่ภาษาที่เป็นมิตรสำหรับการทดสอบ
SystematicFrank

62

Derek Banas ทำแบบฝึกหัด YouTube สำหรับรูปแบบดีไซน์ที่ฉันชอบมาก:

http://www.youtube.com/playlist?list=PLF206E906175C7E07

พวกเขาอาจสั้นในเวลาสั้น ๆ แต่เวลาและการนำเสนอของเขาทำให้พวกเขาสนุกกับการเรียนรู้


35

ฝึกฝนฝึกฝนฝึกฝน

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

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

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

มันเหมือนกับการเข้ารหัส K&R อาจเป็น "พระคัมภีร์" สำหรับ C แต่การอ่านหนังสือแบบครอบคลุมเพื่อให้ครอบคลุมหลาย ๆ ครั้งก็ไม่ได้ให้ประสบการณ์จริงเพียงอย่างเดียว ไม่มีการทดแทนประสบการณ์


5
+1 ฉันคิดว่าสามเณรจำนวนมากกระโดดเร็วเกินไปในรูปแบบการออกแบบและเริ่มออกแบบระบบที่สร้างขึ้นรอบโรงงานนามธรรมผู้สังเกตการณ์ผู้เยี่ยมชม ฯลฯ ตรงจากหนังสือ ผลลัพธ์มักจะหนักมือไม่ได้ใช้ประโยชน์จากภาษาอย่างดีที่สุดและไม่ได้รับการออกแบบมาอย่างดีจากจุดยืนการมีเพศสัมพันธ์ / การทำงานร่วมกันขั้นพื้นฐาน ต้องใช้ประสบการณ์ในการตัดสินใจว่ารูปแบบการออกแบบเหมาะสมอย่างไรและต้องตัดสินใจว่าจะนำรูปแบบการออกแบบไปใช้อย่างเหมาะสมที่สุดในภาษาใดภาษาหนึ่ง
stinky472

25

ฝึกฝึกฝนฝึกหัด ฉันคิดว่าหนังสือ 4 ถึง 5 เล่มเป็นแบบฝึกหัดการอ่านมากเกินไปโดยไม่ต้องฝึกหัด ฉันเชื่อว่าวิธีที่ดีที่สุดในการทำเช่นนี้คือการเริ่มการฟื้นฟูโครงการปัจจุบันของคุณโดยใช้รูปแบบ หรือถ้าคุณไม่มีโครงการใด ๆ ที่คุณกำลังทำอยู่ให้ทำในแบบของคุณเองแล้วลองปรับโครงสร้างเป็นแบบใหม่

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


15

ถามตัวเองด้วยคำถามเหล่านี้:

พวกเขาทำอะไร?

พวกเขาแยกคู่อะไร

เมื่อใดที่คุณควรใช้

เมื่อใดที่คุณไม่ควรใช้

มีคุณสมบัติภาษาอะไรที่ขาดหายไปทำให้พวกเขาหายไป?

หนี้สินทางเทคนิคใดที่คุณต้องเสียโดยใช้มัน

มีวิธีที่ง่ายกว่าในการทำงานให้สำเร็จหรือไม่?


14
และในที่สุดก็ถามตัวเองจากที่ที่จะได้รับคำตอบของคำถามที่กล่าวมาทั้งหมด
Jatin Dhoot

@JatinDhoot โดยคิด ..
gtrak

8

ฉันพบว่ามันยากที่จะเข้าใจหรือเข้าใจถึงประโยชน์ของรูปแบบบางอย่างจนกระทั่งคนหนึ่งเข้าใจปัญหาที่พวกเขาแก้ไขและอีกวิธีที่แย่กว่านั้นคือการนำไปปฏิบัติ

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

โชคดี


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

8

มีตัวอย่างที่ดีมากมาย ฉันต้องการเพิ่ม:

พวกเขาใช้ผิด คุณไม่จำเป็นต้องทำอย่างตั้งใจมันจะเกิดขึ้นเมื่อคุณพยายามที่จะนำมันไปใช้ใน Design-Pattern-พอดี ในช่วงเวลานั้นทุกปัญหาเดียวที่คุณจะเห็นจะดูเหมือนพอดีกับรูปแบบการออกแบบเดียว บ่อยครั้งที่ปัญหาทั้งหมดดูเหมือนจะพอดีกับรูปแบบการออกแบบเดียวกันด้วยเหตุผลบางอย่าง (Singelton เป็นผู้สมัครหลักสำหรับเรื่องนั้น)

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

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


7

คุณได้อ่าน "รูปแบบการออกแบบอธิบาย" โดย Allan Shalloway

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

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

ตัวอย่างเช่นในรูปแบบกลยุทธ์สิ่งทั่วไปจะแสดงเป็นบริบทของกลยุทธ์และส่วนตัวแปรจะแสดงเป็นกลยุทธ์ที่เป็นรูปธรรม

ฉันพบว่าหนังสือเล่มนี้มีความคิดที่เร้าใจอย่างมากเมื่อเทียบกับหนังสือแบบอื่น ๆ ซึ่งสำหรับฉันแล้วฉันมีความตื่นเต้นในระดับเดียวกับการอ่านสมุดโทรศัพท์


6

7
ฉันจะไม่แนะนำหนังสือที่เป็น "เปิดตา" หนังสือ :)
Geo

73
ฉันอยากจะแนะนำว่าเป็นหนังสือที่ปิดตา สักสองสามหน้าของหนังสือเล่มนี้ก่อนนอนและการนอนไม่หลับของคุณจะเป็นอดีต
Dónal

2
มาที่นี่เมื่อฉันรู้สึกหลับสนิทระหว่างที่อ่านหนังสือเล่มนี้ ค้นหา 'เข้าใจรูปแบบการออกแบบ' พบโพสต์ พบความคิดเห็นข้างต้น ทำวันของฉัน เห็นด้วยกับคนอื่น ๆ มันเป็นหนังสือปิดตา
aimme

5

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


4

ฉันได้นำกลุ่มสนทนารูปแบบการออกแบบ ( เว็บไซต์ของเรา ) มาสองสามเล่มและได้อ่านหนังสือรูปแบบ 5 หรือ 6 เล่ม ฉันขอแนะนำให้เริ่มต้นด้วยหนังสือ Head First Design Patterns และเข้าร่วมหรือเริ่มกลุ่มสนทนา หนังสือเล่มแรกของ Head Head อาจดู Hasboro เล็กน้อยในตอนแรก แต่คนส่วนใหญ่ชอบมันหลังจากอ่านบทหรือสองบท

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


3

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


2

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


2

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

เท่าที่ฉันชอบส่วนตัวฉันชอบรูปแบบการออกแบบ Head First Designโดย O'Reilly มันเขียนด้วยเสียงสนทนาที่ดึงดูดใจฉัน เมื่อฉันอ่านฉันได้ตรวจสอบซอร์สโค้ดของฉันในเวลาเดียวกันเพื่อดูว่ามันใช้ได้กับสิ่งที่ฉันอ่านหรือไม่ ถ้าเป็นเช่นนั้นฉันจะสร้างใหม่ นี่คือวิธีที่ฉันเรียนรู้จากเครือข่ายความรับผิดชอบ

การปฏิบัติ - การปฏิบัติ - การปฏิบัติ


2

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

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


2

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

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


2

ความคิดที่อ่านรูปแบบการออกแบบฝึกการเขียนโค้ดไม่ได้ช่วย IMO ได้จริง ๆ เมื่อคุณอ่านหนังสือเหล่านี้ 1. มองหาปัญหาพื้นฐานที่รูปแบบการออกแบบเฉพาะแก้เริ่มต้นด้วย Creational Patterns เป็นทางออกที่ดีที่สุดของคุณ 2. ฉันมั่นใจว่าคุณเคยเขียนโค้ดมาแล้ววิเคราะห์ว่าคุณประสบปัญหาแบบเดียวกันกับที่รูปแบบการออกแบบมีจุดประสงค์เพื่อการแก้ปัญหาหรือไม่ 3. ลองออกแบบ / ใส่รหัสตัวใหม่หรือเริ่มใหม่

เกี่ยวกับแหล่งข้อมูลคุณสามารถตรวจสอบสิ่งเหล่านี้ได้

  1. www.dofactory.com
  2. รูปแบบการออกแบบ: องค์ประกอบของซอฟต์แวร์เชิงวัตถุที่นำกลับมาใช้ใหม่ (ซีรีย์ Addison-Wesley Professional Computing) โดย Erich Gamma, Richard Helm, Ralph Johnson และ John M. Vlissides
  3. รูปแบบของสถาปัตยกรรมแอปพลิเคชันองค์กรโดย Martin Fowler

1 เป็นการเริ่มต้นอย่างรวดเร็ว 2 จะเป็นการศึกษาเชิงลึก 3 จะอธิบายหรือทำให้คุณคิดว่าสิ่งที่คุณเรียนรู้ใน 2 เหมาะกับซอฟต์แวร์องค์กร

2 เซ็นต์ของฉัน ...


1

ฉันคิดว่ามันยากที่จะศึกษารูปแบบการออกแบบด้วย คุณต้องรู้เพิ่มเติมเกี่ยวกับ OOP และประสบการณ์บางอย่างกับการพัฒนาแอพพลิเคชั่นขนาดกลางถึงใหญ่ สำหรับฉันฉันเรียนเป็นกลุ่มนักพัฒนาเพื่อทำการสนทนา เราปฏิบัติตามคำแนะนำการเรียนรู้ในการออกแบบรูปแบบที่พวกเขาเสร็จสิ้นการศึกษารูปแบบ มีนักพัฒนา C # และ JavaScript เข้าร่วมด้วยกัน มันเป็นสิ่งที่แปลกสำหรับฉันคือนักพัฒนารหัส C # ใน JavaScript และนักพัฒนา JavaScript ทำสิ่งเดียวกันสำหรับรหัส C # หลังจากออกจากการประชุมฉันก็ค้นคว้าและอ่านหนังสือสองสามเล่มที่บ้านเพื่อทบทวน วิธีที่ดีกว่าที่จะเข้าใจและจำไว้ในใจของฉันคือการทำบล็อกที่มีตัวอย่างทั้งใน C # และ JavaScript ในที่นี่http://tech.wowkhmer.com/category/Design-Patterns.aspx

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

ตัวอย่างเช่น:

วิธีการโรงงาน:

อ่านโลก: ฉันแค่ให้เงิน $ 5, $ 10 หรือ $ 20 และมันจะผลิตพิซซ่ากลับโดยไม่ทราบว่ามันผลิตอย่างไรฉันแค่ได้พิซซ่าขนาดเล็กขนาดกลางหรือใหญ่ขึ้นอยู่กับการป้อนเงินเพื่อที่ฉันจะได้กินหรือทำอะไรก็ได้

การเขียนโปรแกรม: ลูกค้าเพียงแค่ส่งค่าพารามิเตอร์ $ 5, $ 10 หรือ $ 20 ไปยังวิธีการจากโรงงานและมันจะส่งคืนวัตถุพิซซ่ากลับมา ดังนั้นลูกค้าสามารถใช้วัตถุนั้นโดยไม่ทราบว่ามันประมวลผลอย่างไร

ฉันไม่แน่ใจว่าสิ่งนี้จะช่วยคุณได้ ขึ้นอยู่กับระดับความรู้ของผู้เข้าร่วมประชุม


ลิงก์ที่สองในคำตอบนั้นตาย
ปาง

1

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

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


1

สำหรับผู้เริ่มต้นรูปแบบ Head First Design จะทำเมื่อเราคุ้นเคยกับรูปแบบทั้งหมดแล้วลองมองภาพวัตถุเวลาจริงเป็นรูปแบบเหล่านั้น

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

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