zoukankan
html css js c++ java
订阅者模式实例
通常我们做程序下载的时候可能会是一个比较缓慢的过程,为了让用户有一个良好的用户体验。我们不应该让用户看到的是类似程序死掉的界面,应该输出一些信息让用户能看到当前的操作进程
所以,我们使用了订阅者模式
1。集中操作的类实现Subject接口
Subject 成员
#region
Subject 成员
/**/
///
<summary>
///
注册订阅者
///
</summary>
///
<param name="obs">
订阅者
</param>
public
void
registerInterest(Observer obs)
{
observers.Add(obs);
}
/**/
///
<summary>
///
发送给每个订阅者消息
///
</summary>
///
<param name="message">
消息
</param>
private
void
SendAllObserverMessage(
string
message)
{
for
(
int
i
=
0
; i
<
observers.Count; i
++
)
{
Observer obs
=
(Observer) observers[i];
obs.sendNotify(message);
}
}
#endregion
这里只是提供一个注册观察者的方法
我们在我们长时间执行的操作中可以用如下方式:
SendAllObserverMessage(
"
正在下载更新包
"
);
if
(DownloadFile(stPath))
{
//
get the root's parent directory
string
parentPath
=
rootInfo.FullName;
destPath
=
parentPath
+
Path.DirectorySeparatorChar
+
stUpdateName
+
Path.DirectorySeparatorChar;
//
Extract Zip File
SendAllObserverMessage(
"
正在解压缩更新包到更新目录
"
);
this
.unzip(stPath, destPath);
//
Delete Zip File
SendAllObserverMessage(
"
正在删除更新包
"
);
File.Delete(stPath);
}
2。下载状态类实现Observer接口
Observer 成员
#region
Observer 成员
public
void
sendNotify(
string
message)
{
MessageState.Text
=
message;
this
.Refresh();
}
#endregion
这个接口很简单,就是把接收到的消息显示在屏幕上
其实模式只是在重构和解决某种特定问题的时候才会使用到的,可能是比较潜意识的吧
其实不只是下载这种操作可以使用,比如EDI打包操作也可以使用,或者批量抽取数据到数据仓库。
可以使用的地方还是蛮多的,当然了,我们不能滥用模式,不能为了模式而模式,而是为了解决问题而模式
查看全文
相关阅读:
字符串格式化及操作操作
操作文件
python学习笔记(数据类型)
抓包工具之—charles碎言碎语
jmeter之关联操作
eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
java使用this关键字调用本类重载构造器
无法安装Windows Live“OnCatalogResult:0x80190194”错误的解决方法
JavaScript笔试必备语句
VS2015详细安装步骤
原文地址:https://www.cnblogs.com/wildfish/p/148066.html
最新文章
NSDate如何获取一个月后的日期
iOS UIImageView 显示不规则图片只显示图片一部分保证图片不被压缩
ios项目生成ipa文件方法
为 UIButton 添加长按事件
NSOperationQueue 多线程
iOS 获取UUID
iOS系统自带正则表达式简单运用
UIFont 设置字体
stretchableImageWithLeftCapWidth 的使用方法
系统UITabBar属性设置
热门文章
修改seacherbar 取消按钮属性
UIImage转换UIColor内存会莫名增大可以试试另一种方法
UIImage 调整图片大小
替换SearchBar 键盘上的 搜索 按钮
XMPP语音聊天解决方案 (待论证 正打算写)
异步刷新tableView
GCD Demo (先存起来自己看)
将一个UIView对象的内容保存为UIImage
python修改文件
python 每周作业
Copyright © 2011-2022 走看看