รูปแบบ Ruby on Rails - มัณฑนากรกับผู้นำเสนอ


112

ช่วงนี้มีการพูดคุยกันทุกประเภทในชุมชน Ruby on Rails เกี่ยวกับมัณฑนากรและผู้นำเสนอ

อะไรคือความแตกต่างที่สำคัญระหว่างทั้งสอง? ถ้ามีอะไรคือเบาะแสที่บอกฉันว่าควรใช้อันไหนกับอีกอัน? หรืออาจจะใช้ทั้งสองร่วมกัน?

คำตอบ:


102

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

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


3
ขอบคุณ. ดูเหมือนว่าอัญมณี Draper นั้นเป็นลูกผสมของผู้นำเสนอและมัณฑนากร
keruilin

17
สิ่งหนึ่งที่ควรคำนึงถึง: นักตกแต่งควรสามารถตกแต่งมัณฑนากรคนอื่น ๆ ได้ (เช่นเดียวกับการตกแต่งวัตถุที่เป็นส่วนประกอบ) เนื่องจากจุดประสงค์ประการหนึ่งของพวกเขาคือการหลีกเลี่ยงข้อ จำกัด ของการสืบทอด (Draper ไม่ทำเช่นนี้) รูปแบบมัณฑนากรมีความคล้ายคลึงกับรูปแบบคอมโพสิตในแง่นั้นมากยกเว้นการจัดการจากด้านนอกในแทนที่จะเป็นแบบภายใน - ภายนอก (หากเหมาะสม)
รอยเปื้อน

7
ฉันเห็นมัณฑนากรเป็นรูปแบบวัตถุประสงค์ทั่วไปและผู้นำเสนอเป็นแอปพลิเคชันเฉพาะของมัณฑนากรที่เกี่ยวข้องกับเลเยอร์มุมมอง
กฤษ

2
@Smudge ผู้ตกแต่งผ้าม่านสามารถตกแต่งของตกแต่งอื่น ๆ ได้อย่างน้อยก็เหมือนกับว่าโมเดลต้นแบบมีความสัมพันธ์แบบ STI
keruilin

ดูเหมือนว่าตอนนี้ Draper ระบุว่าตัวเองเป็นกระดาษห่อเลเยอร์การนำเสนอดังนั้นจึงไม่ใช่มัณฑนากรอีกต่อไป แต่เป็นผู้นำเสนอจริงๆ จาก GH: "Draper เพิ่มชั้นตรรกะการนำเสนอเชิงวัตถุให้กับแอปพลิเคชัน Rails ของคุณ"
Jared

35

ผมขอแนะนำให้คุณตรวจสอบนี้ - จัดแสดงนิทรรศการ VS พรีเซนเตอร์

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

ทั้งรูปแบบการจัดแสดงและผู้นำเสนอเป็นรูปแบบของมัณฑนากร


+1 สำหรับลิงก์ไปยังโพสต์บล็อกนั้นโดย Mike Pack โพสต์ที่ยอดเยี่ยมที่อธิบายความแตกต่างระหว่างรูปแบบ
ki4jnq

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