DucVA's Blog

Why ServiceLocator | July 6, 2010

Bài toán đặt ra ban đầu như  sau:

Một Client cần sử dụng/triệu gọi đến 1 Service. Xem mô hình bên dưới

Client service simple mode

Client service

Như mô hình trên cho thấy, client cần có 1 Service Stub (hiểu như là một thể hiện giả của service) để thao tác với Service. Service Stub này có nhiệm vụ tìm kiếm, khởi tạo thể hiện của Service, và gọi service mỗi khi cần.

Phương pháp này làm việc bình thường khi chỉ có 1 client và 1 service, tuy nhiên khi số lượng client tăng lên, thì khối lượng code phải tạo ra cũng tăng theo cấp số cộng. Do mỗi client đều phải cài đặt 1 service Stub của riêng mình. Còn khi số lượng Service tăng lên, thì khối lượng code tăng theo cấp số nhân. Như vậy, mô hình này có nhược điểm rất lớn là làm tăng khối lượng công việc phải làm, thêm vào đó, việc cài đặt stub ở mỗi client sẽ làm cho việc maintain mất nhiều chi phí hơn.

Để khắc phục, xem mô hình sau:

Service Locator

Service Locator

Service Locator được tạo ra để thực hiện vai trò như của Service Stub ở mô hình trên. Tuy nhiên, với mô hình này, các client có thể dùng chung Service Locator.

Như vậy, mỗi client chỉ cần liên kết với Service locator là có thể gọi được service mà không cần phải cài đặt nhiều code.

Sử dụng Service Locator đem lại nhiều lợi ích, như:

– Giảm khối lượng code

– Đơn giản hóa client.

– Tách biệt client với Service, tạo nên quan hệ lỏng lẻo, tăng khả năng tùy biến, thay đổi.

– Thống nhất

– dễ maintain.


Posted in Design Pattern

Leave a Comment »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: