2010-05-03 27 views
8

Tôi có một thành phần cần gọi một dịch vụ cụ thể tùy thuộc vào đầu vào mà nó nhận được. Vì vậy, thành phần của tôi phải xem xét đầu vào và dựa trên cấu hình cho biết "cho đầu vào này gọi dịch vụ này với dữ liệu này" cần phải gọi dịch vụ thích hợp. Các dịch vụ này có một phương thức chữ ký chung và một phương thức cụ thể (mỗi phương thức).Có mẫu thiết kế nào cho điều này không?

Tôi đã nghĩ về một lớp trừu tượng bao gồm chữ ký cho cả ba phương pháp. Việc thực hiện cho hai dịch vụ sẽ ghi đè lên cả ba phương thức (ném NotImplementedException cho các phương thức không được dịch vụ hiện tại hỗ trợ). Một thành phần có thể được khởi tạo với một bản đồ (cho mỗi kiểu đầu vào sẽ có loại dịch vụ được gọi) cũng sẽ được định nghĩa.

Bạn có cách tiếp cận tốt hơn để đối phó với tình huống này không?

Trả lời

6

Factory pattern có định nghĩa này:

Xác định một giao diện để tạo một đối tượng , nhưng hãy để lớp con quyết định mà lớp để nhanh chóng. Nhà máy Phương pháp cho phép lớp học trì hoãn việc hiển thị cho các lớp con

Âm thanh như những gì bạn muốn, phải không?

+1

Tôi nghĩ (được gắn thẻ) về DP của nhà máy, nhưng trong trường hợp này, nó phải được kết hợp với một số mẫu khác, để có thể "cấu hình" được. Tôi đã yêu cầu một cách tiếp cận hiện có theo cách này. – ytrewq

+0

Ngoài ra, điều này có thể được liên kết với mẫu Singleton hoặc Object pooling – ytrewq

+0

Mẫu mặt tiền hoặc bộ điều hợp có thể xứng đáng để xem xét trong việc cho phép một số cấu hình tôi nghĩ. –

0

Microsoft gọi đây là Provider Model Design Pattern. Mặc dù các phương pháp của bạn không thực hiện tất cả các phương thức có lẽ nó không phù hợp lắm.

At its most basic level the pattern is:

  • Một lớp cơ sở trừu tượng xác định một hợp đồng . Lớp cơ sở trừu tượng có tất cả các phương thức trừu tượng và các thuộc tính bắt buộc để triển khai API công khai mà nó hỗ trợ.

  • Thông tin cấu hình. Sau khi triển khai của nhà cung cấp tính năng lớp, nó phải được mô tả trong phần cấu hình. Mô tả của nhà cung cấp trong cấu hình cung cấp tất cả thông tin để nhà cung cấp có thể được khởi tạo trong ứng dụng đang chạy.

Các lớp cơ sở trừu tượng thường nên hỗ trợ các phương pháp nhà máy để tạo ra các đối tượng mới.

0

Mẫu thiết kế chiến lược phù hợp với vấn đề của bạn. Một chiến lược gói gọn một thuật toán và cần phải được thực hiện tùy thuộc vào loại dữ liệu bạn có làm đầu vào.

Các vấn đề liên quan