Wednesday, May 20, 2009

Spring usage

Quan sát cách thiết kế sử dụng Spring ở hình sau:


WebUI có quan hệ dependency lên BL và quan hệ dependency "gián tiếp" với BL.Impl thông qua Spring. "Gián tiếp" có cái lợi là dễ dàng thay thế BL.Impl mà WebUI không bị ảnh hưởng nhờ cấu hình Spring khá dễ dàng. Và điểm lợi cũng chính là điểm yếu. Vì quan hệ «spring» trong suốt, nên WebUI không có cơ hội thao tác trực tiếp BL.Impl. Nó phụ thuộc hoàn toàn vào năng lực cấu hình của Spring trên XML. Ví dụ như: khởi tạo ProjectService cần vài thông số lấy từ file cấu hình, nhu cầu này khiến việc cấu hình spring rất xấu xí.

Thiết kế đơn giản hơn trình bày ở hình dưới. Tất nhiên, thiết kế này sẽ kém linh động hơn nhưng nó giúp tăng mức trừu tượng của WebUI.


App làm nhiệm vụ khởi tạo BL.Impl và tiêm nó vào WebUI. Kết quả là chúng ta có mọi cơ hội khởi tạo BL.Impl một cách mạnh mẽ.

Một góc nhìn khác về spring theo góc nhìn của App chính là: Spring đóng vai trò của App. Nhưng rõ ràng XML không thể mạnh mẽ như một ngôn ngữ lập trình thực thụ như Java hay C# chẳng hạn.

No comments: