Kiến trúc hệ thống trên Laravel – phần 7

Đây sẽ là 1 series gồm 1 số phần như sau:


Hôm nay chúng ta đi vào factory nhé.

Thực ra với Factory Design Pattern chúng ta có 2 dạng (ít nhất là mình biết thế) nhưng mình sẽ diễn đạt cách mình nhìn nhận và sử dụng factory như thế nào nhé (không theo sách vở đâu >.<)

Factory là cái nhà máy sản xuất ra các object theo các điều kiện có sẵn ^^.

Đặc điểm để mình nghĩ đến factory là các điều kiện if-else / switch-case giống nhau được lặp lại ở nhiều chỗ :).

Đi vào ví dụ cái cho nó dễ hiểu nhá ^^.

Các hãng máy bay bây giờ đều có kiểu đánh level khách hàng thân thiết: hạng bạch kim, hàng vàng, hạng bạc, hạng đồng … -> với mỗi hạng thì chiết khấu vé khác nhau và tặng dặm bay khác nhau -> bài toán khá cơ bản nhở, thế chúng ta thường triển khai như thế nào?

Thường thường, chúng ta sẽ có 1 object $user để trỏ tới khách hàng và $user->type chỉ hạng khách hàng. If-else / hoặc switch-case để check điều kiện là xong:

Các bạn thấy đấy, 1 chuỗi điều kiện sẽ được lặp đi lặp lại ở rất nhiều chỗ dẫn đến việc follow logic của bài toán rất khó (ví dụ để kiếm tất cả benefit mà ông bạch kim nhận được thì phải tra rất nhiều controller khác nhau) -> nếu gom nhóm được những xử lý theo từng hạng thì việc quản lý logic, chỉnh sửa hệ thống về sau sẽ dễ dàng hơn rất nhiều rồi.

Làm như thế nào

1. Tập trung xử lý phần điều kiện trong if-else vào các object riêng biệt

2. Sinh object theo điều kiện đầu vào

3. Sử dụng trong client


Vâng, rất nhiều class mới được sinh ra để xử lý 1 vấn đề khá là đơn giản (và thường gặp nữa), nhưng bù lại thì logic của các phần đã được tập trung lại, việc xem xét, chỉnh sửa logic của bài toán bây giờ đơn giản hơn rất nhiều.

Xin cám ơn các bạn đã kiên nhẫn follow mình trong series này :).

P/S: ăn gian 1 tí, bên mình đang tuyển dụng nhân tài Laravel nhá, mong gặp bạn trong 1 ngày gần đấy

Portal Beanz Việt Nam tuyển dụng tháng 04 – 2017