[Tut 10 - Design Pattern] Null Object

Có một số trường hợp khi hệ thống phải sử dụng một vài chức năng và một vài trường hợp nó không sử dụng. Giả sử bạn phải thực hiện một class mà nó phải ghi log vào môt file hoặc console. Nhưng điều này chỉ là một tính năng bổ sung và các dữ liệu được ghi phụ thuộc vào cách cấu hình ghi log của bạn.

Nếu có những trường hợp khi một vài module không cần phải ghi lại log thì bạn phải thực hiện việc kiểm tra xem những module này có cần phải thực hiện log hay không trong một khối IF để kiểm tra trong file cấu hình. Như vậy, việc triển khai này không phải là một giải pháp hay. Và Null Object Design Pattern ra đời từ đây.

Null Object Design Pattern là gì?

Nó cung cấp một null object để thay thế cho trường hợp một instance bị NULL. Thay vì sử dụng một lệnh IF để check một null value, Null Object sẽ phản ánh một mối liên hệ không phải thực hiện - không làm gì cả.



Triển khai Null Object Design Pattern

Những class tham gia vào pattern này bao gồm:
  1. AbstractClass - định nghĩa một behavior cho một cách thức triển khai cụ thể đối với từng null object.
  2. RealClass - một class được thực hiện theo cách thông thường. Hay là class thực, có dữ liệu.
  3. NullClass - một class thực hiện theo cách mà object không tồn tại.
  4. Client - đơn thuần chỉ là một class sử dụng (2) và (3)
Kết luận

Khi các khối lệnh IF vô nghĩa có tồn tại trong ứng dụng thì bạn nên nghĩ tới việc sử dụng Null Object Design Pattern. Nó là giải pháp hay giúp cho source code của bạn đơn giản, tinh tế hơn rất nhiều với việc check null theo cách truyền thống.

Nhận xét

Bài đăng phổ biến từ blog này

Base64 image – Lợi hay hại?

Hàm "tap" trong Laravel Collection