WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院软件开发C语言 无废话C#设计模式之十九:Observer 阅读

无废话C#设计模式之十九:Observer

 2009-04-02 08:23:02 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姈椤愮厧鈽夊Ο閿嬬€婚梺褰掑亰閸撴稑鈻斿鑸碘拺闁告稑饪村▓鏃€绻涚仦鍌氬闁崇粯鎹囬獮瀣攽閹邦剚顔傛俊鐐€栧濠氬储瑜忛幉鎾晸閿燂拷
核心提示:意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新,场景这次不说游戏了,无废话C#设计模式之十九:Observer,假设我们需要在一个Web页面上分页显示数据,首先需要一个分页控制器和一个显示数据的表格,客户的这个请求彻底使我们晕了,代码被我们修改的非常混乱:

意图

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

场景

这次不说游戏了,假设我们需要在一个Web页面上分页显示数据。首先需要一个分页控制器和一个显示数据的表格。开始,客户的需求很简单,需要两个向前翻页向后翻页的按钮作为控制器,还需要一个GridView来显示数据。你可能会这么做:

l         在页面上放两个按钮和一个GridView控件

l         点击了下一页按钮判断是否超出了页面索引,如果没有的话更新GridView中的数据,然后更新控件的当前页,如果翻页后是最后一页的话把下一页按钮设置为不可用。

l         点击了上一页按钮判断是否超出了页面索引,如果没有的话更新GridView中的数据,然后更新控件的当前页,如果翻页后是第一页的话把上一页按钮设置为不可用。

在这里,我们的翻页控件仅仅和GridView进行依赖,看似问题不大。没有想到,客户看了Demo后觉得这样的体验不好,希望在页面上呈现当前页和总共页。于是,我们又在页面上加了一个Label控件,在按钮的点击事件里面再去更新Label控件的值。客户挺满意的,随着软件中数据越来越多,总页数达到了几十页,客户觉得前后翻页太不合理的了,希望有一个显示页数列表的分页控制器,客户的这个请求彻底使我们晕了,代码被我们修改的非常混乱:

l         点击了列表分页控件的页数后更新自身状态、通知GridView加载数据、通知按钮分页控件更新自身状态、通知Label更新页数信息。

l         点击了按钮分页控件后更新自身状态、通知GridView加载数据、通知列表分页控件更新自身状态、通知Label更新页数信息。

1 2 3 4 5 6  下一页

Tags:废话 设计模式 十九

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接