DucVA's Blog

Why ServiceLocator

July 6, 2010
Leave a Comment

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

Factory Method

June 29, 2010
Leave a Comment

The 1st sample, chúng ta hãy xem xét đến những công ty sản xuất ô tô.

Với cùng 1 chức năng là chế tạo ra những chiếc ô tô, nhưng mỗi công ty lại có những chủng loại ô tô của riêng mình. BMW có Sedan, Rover, X series,….

Trong khi Toyota có Camry, Innova, hay Land Cruise,…

The 2nd sample, trong những hệ thống có lưu trữ dữ liệu, chúng ta thường biết đến đối tượng DataBase Connection,

với chức năng tạo và thể hiện 1 kết nối tới cơ sở dữ liệu, nhưng với từng loại cơ sở dữ liệu khác nhau, chúng ta có những kết nối khác nhau:

SQL Server có SqlConnection, MySQL Server có MySqlConnection ACCESS có OLE DBConnection,…

2 Ví dụ trên cho thấy 1 hiện tượng: cùng 1 loại đối tượng, với cùng 1 chức năng, nhưng với từng loại cụ thể hơn lại cho kết quả khác nhau. Đây có thể coi là ý tưởng cơ bản của Factory Method Pattern, tuy nhiên Factory Method còn làm được nhiều hơn thế. (more…)


Posted in Design Pattern

What is Framework?

June 28, 2010
Leave a Comment

Framework là tập hợp các thành phần (class, dll, library,…) kết hợp với nhau, cung cấp các chức năng mang tính tổng quát, mà người sử dụng (developer) có thể tái sử dụng hoặc ghi đè cho phù hợp với ứng dụng sẽ được tạo ra trên nền Framework.
Về khái niệm, Framework có phần giống với Thư viện phần mềm (Software Library). Nhưng Framework có những đặc trưng riêng của nó. Đó là:

(more…)


First time with Design Pattern

June 28, 2010
Leave a Comment

Bắt đầu học Design Pattern. Càng đọc càng cảm thấy ức chế.

Không phải là mình không hiểu, mà là mình không tìm được từ để diễn đạt. Những khái niệm tiếng Anh, viết thì đơn giản, sao dịch ra tiếng Việt khó thế không biết.

Start to learn Design Pattern. The more reading, the more inhibition!

I can understand, but I can’t express what I understand. They’re too abstract. It’s easy to write by Eng, but hard to translate into Vietnamese.


Posted in Design Pattern

Singleton Pattern

June 28, 2010
Leave a Comment

Problem:
Trong nhiều trường hợp, yêu cầu cần phải kiểm soát được quá trình tạo ra đối tượng và kiểm soát vòng đời của đối tượng, trong khi đối tượng này được rất nhiều đối tượng khác của hệ thống gọi đến. Trường hợp thường gặp nhất là cần đảm bảo tại mọi thời điểm chỉ có duy nhất một thể hiện của 1 đối tượng tồn tại.

Solution: Singleton pattern
(more…)