นี่คือโพสต์เก่า แต่ฉันจะพูดสอดในต่อไปเพราะคำตอบอื่น ๆ ไม่ได้จัดการกับสิ่งที่เกิดขึ้นเมื่อใช้ทั้งสองรูปแบบพวกเขาดูเหมือนจะเกี่ยวกับทฤษฎีมากกว่าการปฏิบัติ
การมอบหมายและผู้สังเกตการณ์ทำงานอย่างไร
ด้วยการมอบหมายผู้แทนจะเลือกว่าใครจะตอบกลับเหตุการณ์ใดเหตุการณ์หนึ่งทันทีที่มีการสร้างแหล่งที่มาของเหตุการณ์ที่อาจเกิดขึ้น คุณอาจจะคิดว่าการฟังนี้เป็นหนึ่งเดียวสังเกตการณ์ ในกรณีของรูปแบบการสังเกตการณ์ผู้สังเกตการณ์เลือกว่าใครเป็นคนสังเกตเมื่อใดก็ตามที่รู้สึกว่ามัน ดังนั้นการพึ่งพาจะกลับรายการเมื่อผู้สังเกตการณ์กับการมอบหมาย ด้วยรูปแบบการสังเกตการณ์คิดว่าหนังสือพิมพ์และสมาชิกในฐานะผู้สังเกตการณ์ ผู้สังเกตการณ์อยู่ในการควบคุมว่าจะสร้างความสัมพันธ์เมื่อใด ด้วยการมอบหมายคิดของพนักงานและนายจ้าง นายจ้างอยู่ในการควบคุมว่าจะสร้างความสัมพันธ์เมื่อใดและใครเป็นผู้รับผิดชอบเหตุการณ์เฉพาะ พนักงานไม่สามารถเลือกสิ่งที่พวกเขากำลังทำงาน ... โดยทั่วไป
ผู้แทนบางคนโต้แย้งอาจมีผู้สังเกตการณ์คนหนึ่ง แต่ฉันคิดว่าความแตกต่างที่แท้จริงระหว่างสองคนนี้คือวิธีการจัดการเหตุการณ์ คุณจะไม่เห็นการลงทะเบียนผู้ร่วมกิจกรรม มันจะไม่มีทางรู้ว่าจะจัดการกับเหตุการณ์จนกว่าจะเกิดขึ้นและผู้มอบหมายเรียกวิธีการสาธารณะเกี่ยวกับมัน
ข้อดีของการมอบหมาย
รูปแบบนี้มีความเข้มงวดมากและด้วยการออกแบบที่เรียบง่ายและแข็งแกร่งกว่าทั่วไป มันบังคับให้คุณประกาศตัวจัดการเหตุการณ์ของคุณล่วงหน้าในเวลาที่เริ่มต้นแหล่งที่มาของเหตุการณ์ที่อาจเกิดขึ้น หากคุณต้องการใครสักคนที่จะเข้าชมโดยตรงคุณมอบหมายผู้อำนวยการการจราจรก่อนที่จะเปิดถนน ในกรณีของผู้สังเกตการณ์คุณจะให้ตำรวจจราจรเลือกเวลาที่จะกำหนดทิศทางการจราจรเมื่อใดก็ตามที่เขาหรือเธอรู้สึกเช่นนั้น
ข้อเสียของคณะผู้แทน
ข้อเสียของการออกแบบนี้คือมันไม่ยืดหยุ่น หากคุณกำลังใช้รหัสบางส่วนสำหรับการสมัครรับหนังสือพิมพ์หนังสือพิมพ์ / ผู้แทนจะต้องระบุว่าใครสามารถอ่านเรื่องราวข่าวที่พวกเขาสร้างขึ้น ด้วยรูปแบบการสังเกตการณ์พวกเขาสามารถลงทะเบียนในภายหลังได้ตลอดเวลาและหนังสือพิมพ์จะต้องรู้ว่าคนใหม่ได้ลงทะเบียน
เมื่อจะเลือกผู้แทน?
เมื่อคุณต้องการผู้สังเกตการณ์คนใดคนหนึ่งโดยเฉพาะและแน่นอนว่าไม่มีเหตุผลที่คุณจะเปลี่ยนผู้สังเกตการณ์การออกแบบที่เข้มงวดของรูปแบบการมอบหมายจะเป็นประโยชน์
ตัวอย่างเช่นคุณต้องมีคลาส / วัตถุเพื่อจัดการการสร้างป๊อปอัปสำหรับข้อผิดพลาดเฉพาะ มีหลายเหตุผลที่ทำไมในเวลาทำงานคุณจะต้องเปลี่ยนผู้ที่จัดการกับข้อผิดพลาดเฉพาะดังนั้นการมอบหมายข้อผิดพลาด "หน่วยความจำไม่เพียงพอ" ให้กับเอนทิตีเดียวจะสมเหตุสมผล การสร้างอาร์เรย์ของตัวจัดการที่มีศักยภาพแล้วให้ตัวจัดการเหล่านั้นลงทะเบียนสำหรับข้อผิดพลาด "หน่วยความจำไม่พอ" จะไม่สมเหตุสมผลนัก นั่นจะเป็นตัวอย่างของการใช้รูปแบบผู้สังเกตการณ์ในสถานการณ์นี้ ณ รันไทม์คุณอาจต้องการเปลี่ยนวิธีการที่เรียกว่าหรือ "ผู้รับมอบสิทธิ์" ที่ถูกเรียกสำหรับเหตุการณ์ตัวแปร แต่การสลับตัวจัดการเหตุการณ์สำหรับเหตุการณ์เฉพาะในช่วงรันไทม์นั้นไม่ใช่เรื่องปกติ
มันเป็นไปไม่ได้ที่จะสลับผู้ได้รับมอบหมายอย่างที่คุณจะทำในรูปแบบของผู้สังเกตการณ์มันซับซ้อนมาก ในโลกแห่งความเป็นจริงบางทีคุณอาจต้องการสลับตำรวจจราจรเพื่อให้ผู้มอบหมายใหม่กำลังจัดการกับการจราจร อาจมีคนแย้งว่าการออกแบบที่ดีกว่านั้นจะทำให้ตัวแทนดั้งเดิมเป็นสถานีตำรวจไม่ใช่เจ้าหน้าที่ตำรวจคนเดียว แต่ฉันก็พูดนอกเรื่อง ...