Avatar
0
Quốc Hưng Hoàng Beginner
[Design Pattern] Chain of Responsibility
Xin chào anh Dũng và mọi người,

Em đang đọc đến mẫu thiết kế Chain of Responsibility trong cuốn sách "Làm chủ các mẫu thiết kế kinh điểm trong lập trình",

Đồng thời em cũng đang làm 1 pet project nhỏ để crawl data và đang làm 1 feature theo em nghĩ có thể ứng dụng mẫu thiết kế trên. Mong anh review qua ạ.

Cụ thể, em crawl kết quả bóng đá của 1 câu lạc bộ, bao gồm tỉ số, người ghi bàn, v.v.

Sau khi lấy kết quả, em muốn đánh dấu 1 trận đấu là 1 trận "đáng chú ý" bằng cách xác định:

  • có 1 cầu thủ ghi hattrick
  • cách biệt tỉ số > 3 bàn

...

nếu đó là "đáng chú ý" thì em sẽ thực hiện 1 hành động dựa trên nghiệp vụ của dự án.

Tiếp theo em sẽ tiếp tục quá trình ETL data của em.

Theo em thì với logic như trên, Chain of Responsibility khá phù hợp để implement nhưng em chưa đọc hết sách nên ko rõ có phải là sự lựa chọn tốt nhất ko. Mong anh giải đáp ạ

Cảm ơn anh Dũng và mọi người

  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Anh đang tưởng tượng rằng em có 1 vòng lặp vô hạn để lấy dữ liệu, và khi tìm được dữ liệu đặc biệt nào đó thì em sẽ xử lý tương ứng, vậy anh nghĩ em nên dùng kết hợp với observer design pattern em ạ. Nghĩa là sẽ có 1 lớp lắng nghe sự kiện có 1 trận đấu nào đó đáng chú ý được gửi đến từ crawler và xử lý.

Chain of responsibility nó nên dùng trong một chuỗi xử lý đồng bộ với nhau, ví dụ như em crawl data, sau đó em lưu dữ liệu vào database, 2 cái handler đó trong cùng 1 chain of responsibility là hợp lý, nhưng phải có điều kiện nào đó thì mới gọi đến 1 handler nào đó nó sẽ không đc tự nhiên và tiềm ẩn rủi ro là nếu code sai sẽ khiến cả chain of responsibility bị sai theo.

  • 0
  • Reply