เหตุผลที่ชัดเจนที่จะใช้เขียนแทนปลั๊กอินคือเมื่อคุณจำเป็นต้องแทนที่ส่วนตัววิธีการป้องกันหรือสุดท้าย
แต่ยังพิจารณาสถานการณ์สมมติต่อไปนี้
สถานการณ์ที่ 1 (ลำดับการจัดเรียงแบบสัมบูรณ์):
ปรับเปลี่ยนจะมีประโยชน์เมื่อคุณจำเป็นต้องใช้รหัสของคุณจะถูกเรียกใช้ก่อนปลั๊กอิน ฉันรู้ว่าคุณสามารถทำได้โดยการตั้งค่าปลั๊กอินsortOrder
แต่คุณไม่สามารถมั่นใจได้ว่ารหัสของคุณจะเป็นครั้งแรกเมื่อมีคน (ไม่ใช่คุณ) ติดตั้งคอมโพเนนต์ของบุคคลที่สาม
สถานการณ์ที่ 2 (ไม่รวมรหัส):
หากคุณต้องการแยกหรือเขียนใหม่บางส่วนของโค้ดในเมธอดปลั๊กอินอาจเป็นวิธีย่อยที่ดีที่สุด ฉันรู้ว่าคุณสามารถใช้around
ปลั๊กอินและหลีกเลี่ยงการโทรproceed
แต่สิ่งนี้อาจทำลายปลั๊กอินอื่น ๆ ในสแต็ก
สถานการณ์ที่ 3 (รูปแบบโค้ด):
คุณควรใช้การเขียนซ้ำเมื่อคุณต้องการเขียนพฤติกรรมใหม่ปลั๊กอินควรใช้เพื่อแก้ไขเอาต์พุตหรือรันโค้ดก่อน / หลัง
ปลั๊กอินควรใช้รหัสดั้งเดิมเสมอเพื่อหลีกเลี่ยงการทำลายโมดูลอื่น ๆ
บทสรุปของฉัน:
หากคุณสามารถพิจารณาวิธีการหลักเป็นกล่องดำที่มีอินพุตและเอาต์พุตหนึ่งรายการและคุณไม่เชื่อเรื่องกลไกภายในของมันปลั๊กอินอาจเป็นตัวเลือกที่ดีที่สุด
หากคุณต้องการเปลี่ยนพฤติกรรมภายในการเขียนใหม่อาจเป็นตัวเลือกที่ดีที่สุด