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
Nguồn
2009-08-09 20:31:41
Đ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ị. –