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打包操作也可以使用,或者批量抽取数据到数据仓库。
可以使用的地方还是蛮多的,当然了,我们不能滥用模式,不能为了模式而模式,而是为了解决问题而模式
查看全文
相关阅读:
20165204 缓冲区溢出漏洞实验
2019-2020 1 20175230 实验四 外设驱动程序设计
2019-2020-1 20175230 实验三 并发程序
2019-2020-1 20175208 20175218 20175230 实验二 固件程序设计
2019-2020-1 20175208 20175218 20175230 实验一 开发环境的熟悉
2018-2019-2 20175230 实验五《网络编程与安全》实验报告
2018-2019-2 20175230实验四 《Android开发基础》实验报告
2018-2019 2 20175230《Java程序设计》第十一周学习总结
2018-2019-2 20175230 实验三《Java面向对象程序设计》实验报告
MyCP
原文地址:https://www.cnblogs.com/wildfish/p/148066.html
最新文章
2018-2019-1 20165327 《信息安全系统设计基础》第七周学习总结
2019-2020-1-20175332-实验三:并发程序
2019-2020-2-20175332 20175323 20175228-实验二固件程序设计
2019-2020-1-20175332 20175323 20175228 实验一开发环境的熟悉
2018-2019-2-20175332-实验五《网络编程与安全》实验报告
2018-2019-2-20175332-实验四《Android程序设计》实验报告
2019-2019-2-20175332-实验三《敏捷开发与XP实践》实验报告
MyCP.java蓝墨云班课
2018-2019-2-20175332-实验二《Java面向对象程序设计》实验报告
第五周学习总结
热门文章
2018-2019-2 20175332-实验一《Java开发环境的熟悉》实验报告
2018-2019-1 20165204 20165220 实验五 通讯协议设计
2018-2019-1 20165204 《信息安全系统设计基础》第十一周学习总结
2018-2019 20165204 20165216 20165220 实验四 外设驱动程序设计
2018-2019-1 20165204 实验三 实时系统
2018-2019-1 20165204 《信息安全系统设计基础》第七周学习总结
20165204 第10周课下作业补做
实验二 固件程序设计
实验一 开发环境的熟悉
2018-2019-1 20165204 《信息安全系统设计基础》第四周学习总结
Copyright © 2011-2022 走看看