ความแตกต่างระหว่าง Handler, Manager และ Controller


21

มีความแตกต่างระหว่างการตั้งชื่อคลาส "Handler", "Manager" หรือ "Controller" หรือไม่? PurchaseManagerIE: PurchaseHandler, PurchaseController,

ความพอเพียงเหล่านี้ถ่ายทอดความหมายเดียวกันหรือมีความแตกต่างอย่างชัดเจนระหว่างพวกเขาหรือไม่?

หากไม่มีคำตอบที่ไม่เชื่อเรื่องภาษาให้พิจารณา Java เป็นภาษา


1
บริบทเพิ่มเติมจะเป็นประโยชน์ที่นี่ เฟรมเวิร์กจำนวนมาก (หลาย!) มีคำจำกัดความที่ชัดเจนของความแตกต่าง อย่างไรก็ตามไม่มีคำจำกัดความสากลที่อยู่เบื้องหลังคำเหล่านี้ คุณกำลังทำงานในบริบทใด คุณใช้กรอบอะไร คุณใช้ภาษาอะไร
S.Lott

ภาษาที่กระจ่างชัด
hpique

ที่เกี่ยวข้อง: programmers.stackexchange.com/questions/81981/…
Mike Baranczak

คำตอบ:


15

โดยปกติแล้ว 'Controller' จะเป็นส่วนต่อประสานระหว่างองค์ประกอบส่วนต่อประสานผู้ใช้กับรุ่น (เช่นซื้อ) ตัวควบคุมควรเป็นคลาสที่เล็กกว่าการทำกิจกรรมอินเทอร์เฟซผู้ใช้กับฟังก์ชันโมเดล

'ผู้จัดการ' เป็นกลิ่นรหัส การซื้อควรจัดการตัวเองหรืออาจจัดการโดยคลาสที่เป็นเจ้าของเช่นผู้ขายหรือผู้ซื้อ

'ตัวจัดการ' มักจะเป็นฟังก์ชั่นเดียวห่อในวัตถุ สิ่งเหล่านี้จำเป็นสำหรับการเขียนโปรแกรมในภาษาดั้งเดิมโดยไม่มีฟังก์ชั่นชั้นหนึ่ง


ในขณะที่ฉันไม่ชอบแนวคิดของ 'ผู้จัดการ' ฉันคิดว่าเหตุผลที่ไม่มีการจัดการกับตรรกะทางธุรกิจของตนเองก็คือโปรแกรมเมอร์ต้องการแยกถั่ว / pojo / dto ออกจากการดำเนินธุรกิจที่ซับซ้อน
Sridhar Sarnobat

1
ในขณะที่ฉันเห็นด้วยกับคุณเกี่ยวกับผู้จัดการจากมุมมองภาษา agnostics ฉันต้องการเพิ่มว่าผู้จัดการสามารถใช้คำที่ถูกต้องในบางกรณี ตัวอย่างเช่นการพูดคุยของผู้จัดการจากตัวอย่างโปรโตคอล สำหรับ SNMP คุณมีผู้จัดการ "การจัดการ" ชุดตัวแทน นี่เป็นคำที่ถูกต้องที่จะใช้ในกรณีนี้ อย่างไรก็ตามสิ่งนี้แสดงให้เห็นถึงการใช้ "ผู้จัดการ" ที่เกิดขึ้นเองได้เอง
patrik

7

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

ฉันคิดว่าชื่อสามัญอื่นของ Controller คือ "Broker" ซึ่งจะเปลี่ยนมุมมองเล็กน้อย


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