在軟件構(gòu)建過(guò)程中,我們需要為某些對(duì)象建立一種“通知依賴關(guān)系” ——一個(gè)對(duì)象(目標(biāo)對(duì)象)的狀態(tài)發(fā)生改變,所有的依賴對(duì)象(觀察者對(duì)象)都將得到通知。如果這樣的依賴關(guān)系過(guò)于緊密,將使 " /> 日本xxxxxxxxx69中国,小明日韩在线看看永久区域,日本高清一区

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

.NET設(shè)計(jì)模式:觀察者模式(Observer Pattern)

  概述
  在軟件構(gòu)建過(guò)程中,我們需要為某些對(duì)象建立一種“通知依賴關(guān)系” ——一個(gè)對(duì)象(目標(biāo)對(duì)象)的狀態(tài)發(fā)生改變,所有的依賴對(duì)象(觀察者對(duì)象)都將得到通知。如果這樣的依賴關(guān)系過(guò)于緊密,將使軟件不能很好地抵御變化。使用面向?qū)ο蠹夹g(shù),可以將這種依賴關(guān)系弱化,并形成一種穩(wěn)定的依賴關(guān)系。從而實(shí)現(xiàn)軟件體系結(jié)構(gòu)的松耦合。
  意圖
  定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí), 所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。[GOF 《設(shè)計(jì)模式》]
  結(jié)構(gòu)圖

圖1 Observer模式結(jié)構(gòu)圖

  生活中的例子
  觀察者定義了對(duì)象間一對(duì)多的關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)變化時(shí),所有依賴它的對(duì)象都得到通知并且自動(dòng)地更新。拍賣演示了這種模式。每個(gè)投標(biāo)人都有一個(gè)標(biāo)有數(shù)字的牌子用于出價(jià)。拍賣師開(kāi)始拍賣時(shí),他觀察是否有牌子舉起出價(jià)。每次接受一個(gè)新的出價(jià)都改變了拍賣的當(dāng)前價(jià)格,并且廣播給所有的投標(biāo)人進(jìn)行新的出價(jià)。


圖2 使用拍賣例子的觀察者模式

  Observer模式解說(shuō)
  下面通過(guò)一個(gè)例子來(lái)說(shuō)明Observer模式。監(jiān)控某一個(gè)公司的股票價(jià)格變化,可以有多種方式,通知的對(duì)象可以是投資者,或者是發(fā)送到移動(dòng)設(shè)備,還有電子郵件等。一開(kāi)始我們先不考慮Observer模式,通過(guò)一步步地重構(gòu),最終重構(gòu)為Observer模式。現(xiàn)在有這樣兩個(gè)類:Microsoft和Investor,如下圖所示:

 

圖3 UML靜態(tài)圖示例

  它們的實(shí)現(xiàn)如下:

public class Microsoft
{
private Investor _investor;
private String _symbol;
private double _price;
public void Update()
{
_investor.SendData(
this);
}
public Investor Investor
{
get { return _investor; }
set { _investor = value; }
}
public String Symbol
{
get { return _symbol; }
set { _symbol = value; }
}
public double Price
{
get { return _price; }
set { _price = value; }
}
}
public class Investor
{
private string _name;
public Investor(string name)
{
this._name = name;
}
public void SendData(Microsoft ms)
{
Console.WriteLine(
"Notified {0} of {1}'s " + "change to {2:C}", _name,
ms.Symbol,ms.Price);
}
}

NET技術(shù).NET設(shè)計(jì)模式:觀察者模式(Observer Pattern),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一区二区免费看 | 思思久久99热这里只有精品66 | 欧美激情五月 | 久久大香伊蕉在人线国产昨爱 | 超级成人97碰碰碰免费 | 婷婷影院在线综合免费视频 | 视色4se影院在线观看 | 日韩中文字幕精品免费一区 | 亚洲午夜免费视频 | 久久精品国产无限资源 | 中日韩新区 | 欧美日韩一区二区三区视频 | 米奇色网 | 国产成人亚综合91精品首页 | 在线视频亚洲一区 | 亚洲成人福利在线观看 | 国产91丝袜香蕉在线播放 | 日韩午夜免费视频 | 看全色黄大色黄大片女图片 | 国产在线观看麻豆91精品免费 | 国产一区二区三区精品视频 | 亚洲精品在线网站 | 国产精品视频第一区二区三区 | 亚洲天堂成人在线观看 | 国内成人精品视频 | 国产精品_国产精品_国产精品 | 国产成人精品亚洲77美色 | 国产日韩欧美二区 | 成人免费视频在线观看 | 国产视频成人 | 一区二区在线精品免费视频 | 国产麻豆自拍 | 国产精品视频区 | 国产成人一区二区三区精品久久 | 极品美女囗交视频 | 日本亚洲网站 | 色多多在线免费观看 | 精品国精品国产自在久国产不卡 | 99精品视频在线视频免费观看 | 日本高清色视频www 日本高清色视频在线观看免费 | 久久精品影院永久网址 |