訂閱者模式執行個體

來源:互聯網
上載者:User
通常我們做程式下載的時候可能會是一個比較緩慢的過程,為了讓使用者有一個良好的使用者體驗。我們不應該讓使用者看到的是類似程式死掉的介面,應該輸出一些資訊讓使用者能看到當前的操作進程

所以,我們使用了訂閱者模式

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打包操作也可以使用,或者批量抽取資料到資料倉儲。

可以使用的地方還是蠻多的,當然了,我們不能濫用模式,不能為了模式而模式,而是為瞭解決問題而模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.