设计模式19Observer(观察者模式)

设计模式19Observer(观察者模式)

ID:40313353

大小:78.27 KB

页数:6页

时间:2019-07-30

设计模式19Observer(观察者模式)_第1页
设计模式19Observer(观察者模式)_第2页
设计模式19Observer(观察者模式)_第3页
设计模式19Observer(观察者模式)_第4页
设计模式19Observer(观察者模式)_第5页
资源描述:

《设计模式19Observer(观察者模式)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、无废话C#设计模式之十九:Observer意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。场景这次不说游戏了,假设我们需要在一个Web页面上分页显示数据。首先需要一个分页控制器和一个显示数据的表格。开始,客户的需求很简单,需要两个向前翻页向后翻页的按钮作为控制器,还需要一个GridView来显示数据。你可能会这么做:l        在页面上放两个按钮和一个GridView控件l        点击了下一页按钮判断是否超出了页面索引,如果没有的话更新GridView中的数据,然后更新控件的当前页,如果翻

2、页后是最后一页的话把下一页按钮设置为不可用。l        点击了上一页按钮判断是否超出了页面索引,如果没有的话更新GridView中的数据,然后更新控件的当前页,如果翻页后是第一页的话把上一页按钮设置为不可用。在这里,我们的翻页控件仅仅和GridView进行依赖,看似问题不大。没有想到,客户看了Demo后觉得这样的体验不好,希望在页面上呈现当前页和总共页。于是,我们又在页面上加了一个Label控件,在按钮的点击事件里面再去更新Label控件的值。客户挺满意的,随着软件中数据越来越多,总页数达到了几十页,客户觉得前后翻页太不合理的了,希望有一个显示页数列表的分

3、页控制器,客户的这个请求彻底使我们晕了,代码被我们修改的非常混乱:l        点击了列表分页控件的页数后更新自身状态、通知GridView加载数据、通知按钮分页控件更新自身状态、通知Label更新页数信息。l        点击了按钮分页控件后更新自身状态、通知GridView加载数据、通知列表分页控件更新自身状态、通知Label更新页数信息。如果今后页面上还需要针对分页功能有任何修改的话,真不知道怎么去改。由此引入观察者模式来解决这些问题。示例代码usingSystem;usingSystem.Collections.Generic;usingSyste

4、m.Text;namespaceObserverExample{classProgram{staticvoidMain(string[]args){ButtonPagerbuttonPager=newButtonPager();ListPagerlistPager=newListPager();Controlgridview=newGridView();Controllabel=newLabel();buttonPager.changePageHandler+=newPager.ChangePageHandler(buttonPager.ChangePage);

5、buttonPager.changePageHandler+=newPager.ChangePageHandler(gridview.ChangePage);buttonPager.changePageHandler+=newPager.ChangePageHandler(label.ChangePage);buttonPager.changePageHandler+=newPager.ChangePageHandler(listPager.ChangePage);listPager.changePageHandler+=newPager.ChangePageH

6、andler(buttonPager.ChangePage);listPager.changePageHandler+=newPager.ChangePageHandler(gridview.ChangePage);listPager.changePageHandler+=newPager.ChangePageHandler(label.ChangePage);listPager.changePageHandler+=newPager.ChangePageHandler(listPager.ChangePage);buttonPager.NextPage();C

7、onsole.WriteLine();buttonPager.NextPage();Console.WriteLine();buttonPager.NextPage();Console.WriteLine();buttonPager.PreviousPage();Console.WriteLine();buttonPager.PreviousPage();Console.WriteLine();listPager.SelectPage(2);Console.WriteLine();listPager.SelectPage(1);Console.WriteLine

8、();listPager

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。