通常我们做程序下载的时候可能会是一个比较缓慢的过程,为了让用户有一个良好的用户体验。我们不应该让用户看到的是类似程序死掉的界面,应该输出一些信息让用户能看到当前的操作进程
所以,我们使用了订阅者模式

1。集中操作的类实现Subject接口

订阅者模式实例

订阅者模式实例        /// 注册订阅者
订阅者模式实例        
/// </summary>
订阅者模式实例        
/// <param name="obs">订阅者</param>
订阅者模式实例        public void registerInterest(Observer obs)
{
订阅者模式实例            observers.Add(obs);
订阅者模式实例        }

订阅者模式实例

订阅者模式实例        
/// 发送给每个订阅者消息
订阅者模式实例        
/// </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接口

订阅者模式实例
订阅者模式实例        public void sendNotify(string message)
{
订阅者模式实例            MessageState.Text 
= message;
订阅者模式实例            
this.Refresh();
订阅者模式实例        }

订阅者模式实例
订阅者模式实例        
#endregion
这个接口很简单,就是把接收到的消息显示在屏幕上

其实模式只是在重构和解决某种特定问题的时候才会使用到的,可能是比较潜意识的吧

其实不只是下载这种操作可以使用,比如EDI打包操作也可以使用,或者批量抽取数据到数据仓库。
可以使用的地方还是蛮多的,当然了,我们不能滥用模式,不能为了模式而模式,而是为了解决问题而模式

相关文章: