2009-07-08 22 views
5

Trong cuốn sách Lập trình cực đoan được áp dụng, Ken Auer tình cờ đề cập đến mẫu Enabler. Kent Beck cũng đề cập đến nó (ít nhất trong một email ngày 08 tháng 11 năm 2004), nhưng tôi không thể tìm thấy bất kỳ chi tiết nào ở những nơi thông thường (Google, wiki tại c2.com, v.v.)Tôi có thể tìm thêm chi tiết về mẫu Enabler được Ken Auer phổ biến ở đâu?

Tôi có thể tìm hiểu thêm ở đâu?

Trả lời

5

Mẫu Enabler thực sự chỉ là một biến thể của mẫu Observer. Bạn thiết lập quan sát viên trên các phần thú vị của một hệ thống, tạo Điều kiện. Người tạo sau đó có thể quan sát các điều kiện và bật/tắt tiện ích con.

Ví dụ: khi bạn tải lên một cửa sổ, bạn tạo điều kiện xem công cụ như một danh sách hoặc hộp tổ hợp (hoặc một mô hình bên dưới danh sách hoặc combo-box) có một cái gì đó được chọn. Bạn có thể gọi nó là một cái gì đó như "somethingSelectedCondition". Sau đó bạn treo lên enablers để widget được gắn với một hoặc nhiều điều kiện (mà bạn có thể và/hoặc với nhau ... mặc dù thường bạn chỉ muốn và chúng lại với nhau trong thực tế).

tôi thường thực hiện chúng bằng việc có một nhà máy phụ tùng như vậy mà một trong những thông số bạn vượt qua trong là một mảng các điều kiện đặt tên đó, khi anded với nhau, bật/tắt một widget. Ví dụ.

widgetFactory.createButton (String BUTTONLABEL, String methodActionName, String [] conditionNames)

Các conditionNames sẽ nhìn lên điều kiện mà có sẵn trong một số loại HashMap, tạo một CompositeCondition (mà AND tất cả các boolean quan sát giá trị của các điều kiện) và tạo ra một Enabler mà nghe các CompositeCondition và kể tạo widget để bật/tắt dựa trên điều kiện cơ bản.

Nghe có vẻ hơi phức tạp, nhưng một khi bạn tạo cơ sở hạ tầng cơ bản, một vài dòng mã dây lên điều kiện của bạn, và sau đó là giao diện người dùng luôn luôn là đồng bộ với các điều kiện.

Tôi không nghĩ rằng tôi đã từng chính thức viết lên mô hình Enabler, hoặc tôi chỉ muốn chỉ cho bạn một URL.

HTH,

Ken

+0

Điều này dường như là câu trả lời dứt khoát! (FWIW, nếu bạn đã từng viết nó đúng cách, tôi sẽ thích URL đó. :-)) Cảm ơn cũng vì một cuốn sách rất hữu ích và thú vị. –

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