แก้ปัญหาโค้ดพังง่ายด้วย Observer Pattern ใน Java
นักพัฒนาแชร์วิธีใช้ Observer Pattern แยกโค้ดระบบแจ้งเตือนฟอร์มลงทะเบียนล่วงหน้าของบริษัทอสังหาฯ ใน Java ให้ดูแลรักษาง่ายขึ้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Observer Pattern เป็นรูปแบบการออกแบบเชิงพฤติกรรมสำหรับจัดการการสื่อสารระหว่างวัตถุ
- แก้ปัญหาโค้ดแบบดั้งเดิมที่เมธอดหลักต้องเรียกบริการหลายตัวตรงๆ จนดูแลยาก
- เปรียบเสมือนกลุ่มบรอดแคสต์ใน WhatsApp ที่ผู้ส่งไม่ต้องสนว่าใครรับหรือทำอะไรต่อ
- ช่วยให้เพิ่มหรือลดการแจ้งเตือนได้ง่ายโดยไม่ต้องแก้โค้ดส่วนที่สร้างเหตุการณ์
การพัฒนาโปรแกรมมักเจอปัญหาเมื่อเหตุการณ์เดียวต้องกระตุ้นการทำงานหลายอย่างพร้อมกัน เช่น ระบบบันทึกข้อมูลผู้สนใจหรือ lead จากหน้าเว็บไซต์ของบริษัทอสังหาริมทรัพย์ ที่ต้องส่งต่อข้อมูลไปยังหลายส่วนในเวลาเดียวกัน
แนวทางแบบดั้งเดิมมักเขียนให้เมธอดหลักทำหน้าที่เรียกใช้งานบริการทุกตัวเรียงตามลำดับโดยตรง ซึ่งทำให้โค้ดมีความผูกพันกันสูงและแก้ไขได้ยากในอนาคต
การที่โค้ดมีความผูกพันกันสูงหรือ tight coupling ถือเป็นปัญหาคลาสสิกในงานพัฒนาซอฟต์แวร์ เมื่อระบบโตขึ้น การเพิ่มเงื่อนไขเข้าไปในเมธอดเดิมจะทำให้โค้ดอ่านยากและเสี่ยงต่อการพัง การใช้รูปแบบการออกแบบโค้ดเข้ามาช่วยจึงเป็นทางออกที่ดีโดยไม่ต้องพึ่งพาไลบรารีภายนอก
ทางออกที่ดีกว่าคือการใช้ Observer Pattern ซึ่งเป็นรูปแบบเชิงพฤติกรรมที่เน้นการกระจายความรับผิดชอบในยามรันไทม์ หลักการหลักคือการสลับบทบาทเพื่อให้ผู้สนใจสมัครรับข้อมูลด้วยตนเอง
หากเปรียบเทียบให้เห็นภาพชัดเจน รูปแบบนี้ก็เหมือนกับกลุ่มบรอดแคสต์ในแอปพลิเคชัน WhatsApp โดยที่ผู้ส่งข้อความไม่ต้องรับรู้รายชื่อสมาชิกทั้งหมดหรือต้องรู้ว่าใครจะนำข้อความไปทำอะไรต่อ ทำหน้าที่เพียงแค่ส่งข้อความออกไปยังรายการเท่านั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในเชิงโครงสร้าง รูปแบบนี้ประกอบด้วยสองส่วนหลักคือ Subject หรือตัวควบคุมสถานะ และ Observer หรือกลุ่มผู้ติดตาม โดยที่ Subject จะไม่รู้จักคลาสเฉพาะเจาะจงของกลุ่มผู้ติดตาม แต่จะรู้จักผ่านอินเทอร์เฟซเท่านั้น ทำให้ระบบยืดหยุ่นสูง
เมื่อนำมาปรับใช้กับระบบเก็บข้อมูล lead ของหน้าเว็บไซต์ค่ายอสังหาฯ ตัว LeadCaptureService จะทำหน้าที่เป็น Subject คอยส่งสัญญาณแจ้งเตือนไปยังผู้ติดตามสี่กลุ่มแบบแยกส่วนอิสระโดยไม่ต้องกังวลรายละเอียดเบื้องหลัง
- ส่งข้อมูลเข้าสู่ระบบ CRM เพื่อบันทึกประวัติ
- แจ้งเตือนทีมงานผ่านแชทกลุ่ม WhatsApp
- ส่งอีเมลยืนยันอัตโนมัติไปยังผู้สนใจ
- บันทึกสถิติข้อมูลเพื่อนำไปวิเคราะห์ต่อ
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น