JavaRush /จาวาบล็อก /Random-TH /ทบทวนหนังสือ “Head First Design Patterns”
Alex
ระดับ

ทบทวนหนังสือ “Head First Design Patterns”

เผยแพร่ในกลุ่ม
ในบรรดาคนที่อย่างน้อยก็คุ้นเคยกับซีรีส์ Head First ก็มีหลายคนที่ถือว่าวรรณกรรมประเภทนี้เป็นการอ่านแบบผิวเผินสำหรับผู้เริ่มต้น สิ่งที่ฉันสามารถพูดได้ไม่น่าเป็นไปได้ที่คุณจะสามารถศึกษาหัวข้อที่ซับซ้อนในสาขาการเขียนโปรแกรมอย่างลึกซึ้งได้ภายใน 48 ชั่วโมง อย่างไรก็ตาม เป็นการยากที่จะโต้แย้งว่า Design Patterns เป็นหนังสือที่จะเป็นแนวทางที่เป็นประโยชน์ในการเขียนโปรแกรมสำหรับผู้เริ่มต้น หนังสือเล่มนี้เป็นหนึ่งในสิบเล่มที่ได้รับความนิยมมากที่สุดใน Stackoverflow และด้วยเหตุผลที่ดี ความง่ายในการนำเสนอ หัวข้อพื้นฐาน และตัวอย่างคุณภาพสูงทำให้หนังสือเล่มนี้ได้รับความนิยมทั้งในปัจจุบันและในความคิดของฉันในอีกหลายปีต่อจากนี้ ทบทวนหนังสือ “Head First Design Patterns” - 1

คุณสมบัติของหนังสือ

Head first design patternsบอกเราว่ารูปแบบคืออะไร วิธีใช้งาน และวิธีคิดเกี่ยวกับรูปแบบเหล่านั้น รูปแบบคือเทมเพลต ซึ่งเป็นวิธีแก้ปัญหาแบบสากลสำหรับชุดปัญหาเฉพาะ ในทางกลับกัน รูปแบบการออกแบบก็เป็นโซลูชันทางสถาปัตยกรรมที่ใช้กันทั่วไป ซึ่งสามารถใช้เพื่อเขียนแอปพลิเคชันที่ใช้งานง่ายและยืดหยุ่นได้ นักพัฒนาทั่วโลกแก้ไขปัญหาเดียวกันด้วยแนวทางเดียวกัน ตามที่คำอธิบายประกอบกล่าวไว้หากคุณไม่ต้องการสร้างวงล้อขึ้นมาใหม่ ให้ใช้เทมเพลตการออกแบบสำเร็จรูป (รูปแบบ) ซึ่งหนังสือเล่มนี้มีไว้สำหรับใช้งานโดยเฉพาะ การนำเสนอเนื้อหาแยกกันเป็นที่น่าสังเกต: หนังสือในชุด Head First มีชื่อเสียงในด้านความเรียบง่ายและอ่านได้ในคราวเดียว “รูปแบบการออกแบบ” ก็ไม่มีข้อยกเว้น นอกจากนี้ยังยึดหลักการสำคัญดังต่อไปนี้:
  1. ทัศนวิสัย
  2. รูปแบบการสนทนาในการนำเสนอ
  3. ภาพประกอบจำนวนมาก
  4. การมีส่วนร่วมของผู้อ่านที่ใช้งานอยู่
  5. อุทธรณ์ไปยังอารมณ์
  6. ดึงดูดความสนใจของผู้อ่าน
ผู้เขียนหนังสือเล่มนี้ใช้ทฤษฎีอภิปัญญาอย่างมีความสามารถเพื่อนำเสนอเนื้อหา: สำหรับฉัน 100 หน้าแรกบินไปโดยไม่มีใครสังเกตเห็น ข้อดีของวิธีนี้ก็คือสมองจะจดจำสิ่งที่อ่านได้จริงๆ การผสมผสานระหว่างรูปแบบการเล่าเรื่องหลายรูปแบบ คำถามที่น่าสนใจ ความซ้ำซ้อน และความคิดสร้างสรรค์ ทั้งหมดนี้ช่วยให้ผู้อ่านไม่หมดความสนใจในหัวข้อหลัก ก่อนจะซื้อหนังสือเล่มนี้ ฉันลังเลหลังจากอ่านบทวิจารณ์ที่หลากหลาย อย่างไรก็ตาม หลังจากอ่านแหล่งข้อมูลอื่นๆ ในหัวข้อนี้อย่างรวดเร็ว ฉันตัดสินใจว่า: หากต้องการเจาะลึกรูปแบบ หนังสือเล่มนี้คือสิ่งที่คุณต้องการ

ประเด็นหลักและแนวคิดหลัก

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

"สรุป"

หนังสือเล่มนี้แบ่งออกเป็น 14 บทพร้อมบทนำ ในตอนแรกผู้เขียนหนังสือพยายามเตรียมผู้อ่าน ปรับสมองให้รับรู้ข้อมูลเกี่ยวกับการออกแบบลวดลายได้อย่างถูกต้อง บทแรกอธิบายหลักการพื้นฐานของรูปแบบและวัตถุประสงค์ของรูปแบบเหล่านั้น หนึ่งในรูปแบบที่ใช้มากที่สุด - กลยุทธ์ - ได้รับการตรวจสอบอย่างง่ายดายและไม่เป็นการรบกวน บทที่สองถึงสิบเอ็ดมีเนื้อหาเกี่ยวกับการวิเคราะห์โดยละเอียดของรูปแบบแต่ละรายการ :
  1. ผู้สังเกตการณ์ กระจายเหตุการณ์ระหว่างอ็อบเจ็กต์ที่สนใจการเกิดขึ้น
  2. มัณฑนากร. ดูการสืบทอดใน Java อีกครั้งและมอบความสามารถใหม่ๆ ให้กับคลาส Java โดยไม่ต้องแก้ไขโค้ด
  3. โรงงาน. รูปแบบจะบันทึกโค้ดจากการขึ้นต่อกันที่ไม่ต้องการ
  4. เดี่ยว. หรือที่รู้จักในชื่อ Singleton ช่วยให้คุณสามารถสร้างออบเจ็กต์คลาสเดียวสำหรับทั้งโปรแกรมได้
  5. ทีม. รูปแบบนี้ช่วยให้คุณสามารถสรุปการเรียกเมธอดได้อย่างสะดวก ซึ่งเป็นการขยายขีดความสามารถของมัน
  6. อะแดปเตอร์และซุ้ม การแก้ปัญหาความไม่เข้ากันของอินเทอร์เฟซตลอดจนวัตถุบรรจุภัณฑ์เพื่อทำให้อินเทอร์เฟซง่ายขึ้น
  7. วิธีเทมเพลต การห่อหุ้มบล็อกอัลกอริทึม ช่วยให้คลาสย่อยเชื่อมโยงกับอัลกอริธึมการประมวลผลที่ต้องการได้ตลอดเวลา
  8. ตัววนซ้ำและตัวเชื่อมโยง รูปแบบนี้เป็นเครื่องมือที่สะดวกสำหรับการวนซ้ำคอลเลกชัน โดยไม่คำนึงถึงประเภท นอกจากนี้ บทนี้ยังให้ข้อมูลบางอย่างเกี่ยวกับซูเปอร์คอลเลกชั่นอีกด้วย
  9. สถานะ. วัตถุมีความสามารถในการควบคุมพฤติกรรมผ่านการเปลี่ยนแปลงสถานะภายใน
  10. รอง. รูปแบบที่สะดวกมากสำหรับการควบคุมการเข้าถึงวัตถุ
บทที่ 12 พิจารณารูปแบบคอมโพสิต หรือการผสมผสานของรูปแบบบางส่วนที่กล่าวถึง ซึ่งสามารถนำมาใช้เพื่อสร้างสถาปัตยกรรมซอฟต์แวร์ที่มีประสิทธิภาพ บทที่ 13 กล่าวถึงการใช้รูปแบบในปัญหาจริง โดยนำเสนอการจำแนกรูปแบบ พันธุ์ และแนวทางการใช้ หนังสือเล่มนี้ทำหน้าที่เป็นภาคผนวกของบทที่ 14 ซึ่งครอบคลุมรูปแบบที่หลากหลายยิ่งขึ้น แต่ละคนมีประโยชน์ในแบบของตัวเอง ดังนั้นการรู้จักสิ่งเหล่านี้จึงเป็นที่พึงปรารถนามากกว่า แน่นอนว่ามันไม่ได้รับความนิยมเท่ากับรูปแบบจากบทที่ 2-11 แต่ก็ไม่ได้ทำให้มีประโยชน์น้อยลงแต่อย่างใด หนังสือเล่มนี้ไม่ได้เสแสร้งว่าเป็นการนำเสนอทฤษฎีรูปแบบที่ถูกต้องในเชิงวิชาการ แต่หากหนังสือ Head First มีความพิถีพิถัน นักพัฒนามือใหม่จะไม่มีโอกาสได้รู้ว่าอะไรคืออะไรและชี้แจงพื้นฐานด้วยตนเอง นี่เป็นวิธีที่ง่ายและสะดวกในการเรียนรู้ว่ารูปแบบการออกแบบใดบ้างสำหรับผู้ที่ไม่คุ้นเคย ตามที่ผู้เขียนระบุ Design Patterns เป็นหนังสือที่เหมาะสำหรับผู้ที่คุ้นเคยกับ Java (หรือ C#) อยู่แล้ว ต้องการเรียนรู้หลักการของการออกแบบเชิงวัตถุ และชอบการสนทนาที่มีชีวิตชีวามากกว่าการบรรยายที่น่าเบื่อ หนังสือเล่มนี้ไม่ใช่หนังสืออ้างอิง! หากคุณเป็นนักพัฒนามืออาชีพที่มีประสบการณ์และทำงานกับรูปแบบเหล่านี้อย่างน้อยบางส่วน หนังสือเล่มนี้ก็ไม่น่าจะทำให้คุณสนใจ องค์ประกอบที่สำคัญของหนังสือคือแบบฝึกหัด คุณไม่ควรข้ามไป หากคุณอ่านหนังสืออย่างละเอียดและในกรณีที่รุนแรงทำการค้นหาทางอินเทอร์เน็ตเพียงเล็กน้อยการแก้ปัญหาจะไม่ทำให้คุณปวดหัว แต่จะมีประโยชน์อย่างแน่นอน อย่างน้อยที่สุด คุณจะเข้าใจทฤษฎีที่นำเสนอในหนังสืออย่างลึกซึ้งยิ่งขึ้น

ข้อดีและข้อเสีย

เช่นเดียวกับหลายๆ คนที่เรียนที่ JavaRush มีทัศนคติที่เย็นชาต่อการบรรยายที่น่าเบื่อ การอัดสื่อการสอน และความรุนแรงอื่นๆ ที่ขัดต่อจิตใจของนักเรียนที่กระหายความรู้ ในความคิดของฉัน พลังงานที่ใช้ไปกับการท่องจำข้อความที่เข้าใจยากนั้นดีที่สุดที่จะใช้ไปกับการค้นหาแหล่งการเรียนรู้อื่น หนังสือเล่มนี้เป็นเล่มที่คุ้มค่ากับเวลาและความพยายามของคุณ รูปแบบการนำเสนอที่ยอดเยี่ยม การจัดการความสนใจของผู้อ่านอย่างมีความสามารถ และการกล่าวประเด็นสำคัญซ้ำ ๆ เป็นข้อได้เปรียบหลักของหนังสือเล่มนี้ - ความง่ายในการดูดซึมเนื้อหา ภาพประกอบจำนวนมากเป็นข้อดีเพิ่มเติม ในความคิดของฉันภาพทุกภาพในหนังสือมีที่มา: ภาพเหล่านี้ทั้งหมดช่วยให้คุณสามารถเสริมคำพูดของผู้แต่งและทำความเข้าใจสาระสำคัญของเนื้อหาได้อย่างลึกซึ้งยิ่งขึ้น ตามที่ฉันได้เขียนไว้ข้างต้น หนังสือเล่มนี้ไม่ใช่หนังสืออ้างอิง ผู้แต่งไม่ได้ตั้งใจที่จะแสดงรายการรูปแบบทั้งหมด หน้าที่หลักคือการให้ความเข้าใจและพูดคุยเกี่ยวกับรูปแบบพื้นฐานเพื่อให้รูปแบบอื่นที่ซับซ้อนกว่าเข้าใจได้ง่ายขึ้น และเธอก็รับมือกับเรื่องนี้ได้ 100% ข้อเสียประการหนึ่งก็คือ รูปแบบการออกแบบ Head First ในภาษารัสเซียนั้นอ่านได้ไม่ง่ายเหมือนในภาษาอังกฤษ แน่นอนว่านักพัฒนาทุกคนควรพูดภาษาอังกฤษได้ แต่โปรแกรมเมอร์มือใหม่ไม่ได้พัฒนาทักษะนี้จนสามารถอ่านหนังสือต้นฉบับได้เสมอไป อย่างไรก็ตามสิ่งนี้ถือได้ว่าเป็นการบังคับลบเนื่องจากมีการนำเสนอเนื้อหาค่อนข้างแม่นยำและความหมายยังคงอยู่

หนังสือเพิ่มเติมเกี่ยวกับรูปแบบการออกแบบ

ฉันเป็นผู้แสดงความเชื่อที่ว่า เป็นการดีกว่าที่จะศึกษาหัวข้อพื้นฐานจากหลายแหล่งและมองหารูปแบบการนำเสนอที่เหมาะสมในนั้น เมื่อคุณต้องการเจาะลึกรูปแบบและอ่านทฤษฎีเพิ่มเติม เชื่อฉันสิ คุณจะมีบางสิ่งบางอย่างที่จะครอบครองในตอนเย็นของคุณ
  1. เทคนิคการออกแบบเชิงวัตถุ รูปแบบการออกแบบ (Gamma E., Helm R., Johnson R., Vlissides J.)

    ทบทวนหนังสือ “รูปแบบการออกแบบ” (Head First Design Patterns) - 2

    นี่เป็นสิ่งพิมพ์ที่จริงจังกว่านี้ หนังสืออ้างอิงเกี่ยวกับรูปแบบ หนังสือที่ได้รับการยกย่องอย่างมากจาก "แก๊งสี่" หลายคนเรียกสิ่งนี้ว่าพระคัมภีร์แห่งการออกแบบ OO

    บนอินเทอร์เน็ตความคิดเห็นของนักพัฒนาแบ่งออกเป็น 3 ค่าย:

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

    สำคัญ:ตัวอย่างในหนังสือเล่มนี้เขียนด้วยภาษา C++

  2. จาวา EE รูปแบบการออกแบบสำหรับมืออาชีพ (Murat Yener, Alex Fidom)

    ทบทวนหนังสือ “รูปแบบการออกแบบ” (Head First Design Patterns) - 3

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

  3. การออกแบบรูปแบบใน Java (Grand M.)

    ทบทวนหนังสือ “รูปแบบการออกแบบ” (Head First Design Patterns) - 4

    หนังสือเล่มนี้แสดงให้เห็นอย่างมีสีสันว่าการใช้รูปแบบช่วยประหยัดเวลาของนักพัฒนาได้อย่างไร ให้ภาพรวมของภาษา UML และอธิบายรูปแบบการออกแบบ 47 รูปแบบ

รูปแบบการออกแบบใน JavaRush

ในหลักสูตร JavaRush รูปแบบการออกแบบจะได้เรียนรู้ที่ระดับ 7ของภารกิจ Java Collections การบรรยายที่ 1และ2เน้นไปที่รูปแบบที่พบบ่อยที่สุด และในการบรรยายที่4คุณสามารถแก้ปัญหาในหัวข้อนี้ได้ ด้านล่างนี้เป็นบทความที่น่าสนใจเพื่อ “เสริมความแข็งแกร่งให้ตัวเอง”:
  1. บทความทั่วไปในหัวข้อรูปแบบพร้อมหมวดหมู่ ตัวอย่าง ทุกอย่างที่เราชอบ

  2. บทความสองเรื่องเกี่ยวกับรูปแบบ: ภาพรวม ส่วนที่ 1และรายละเอียดเพิ่มเติม ส่วน ที่2

  3. ออกแบบลวดลายโดยใช้ ลวดลาย ซิงเกิลตัน เป็น ตัวอย่าง

  4. บทความเกี่ยวกับรูปแบบ “ Strategy ” และ “ Adapter

  5. แนวคิดของรูปแบบการออกแบบเกี่ยวข้องกับไดอะแกรม UML บทความนี้จะช่วยให้คุณเข้าใจว่ามันคืออะไร

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION