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打包操作也可以使用,或者批量抽取数据到数据仓库。
可以使用的地方还是蛮多的,当然了,我们不能滥用模式,不能为了模式而模式,而是为了解决问题而模式
查看全文
相关阅读:
JAVA常用知识总结(十一)——数据库(一)
JAVA常用知识总结(十)——Maven
JAVA常用知识总结(九)——线程
JAVA常用知识总结(八)——计算机网络
JAVA常用知识总结(七)——Spring
Spring Cloud Alibaba教程:Nacos
OpenCV入门(2)- Java第一个程序
OpenCV入门(1)- 简介
Elastic Job入门(1)
Elastic Job入门(3)
原文地址:https://www.cnblogs.com/wildfish/p/148066.html
最新文章
oracle函数 nvl和nvl2
oracle 判断字符串是否是数字
ORA-03113:通信通道的文件结尾-完美解决方案
merge into和update性能对比
二、Javadoc注释
typeScript与JavaScript 数据类型
js 实现左右两个div根据高度自使用 高度一致
input 在 chrome 下 , 自动填充后,会有一个默认样式,如何清除这个默认样式?
react 获取失败的信息
Optional Chaining 可选链操作符?.
热门文章
Nullish coalescing Operator 空值合并
js精度丢失 es11新出BigInt 的可以解决 BigInt 可以表示任意精度格式的整数
react axios 请求多个数据
js div 框对于屏幕高度居中 数据增多 撑满整个高度
react 全选 单选 店铺选
面试问题汇总
云服务中IaaS、PaaS、SaaS的区别
JAVA常用知识总结(十三)——数据库(三)
JAVA常用知识总结(十四)——Servlet
JAVA常用知识总结(十二)——数据库(二)
Copyright © 2011-2022 走看看