设计模式--【委托模式】

Authorjimzhang

观察者模式的使用范围是:当一个对象【类】的变化需要其他的对象知道的时候,可以用这个模式。

但是观察者模式的弱点是:抽象观察者和被观察者【或者说主题统治者和被观察者】之间存在着依赖关系,照成耦合。例如,主题通知者有一个叫做 Notify的方法在这个方法里面要遍历所有的被通知对象,来通知他们。

另外每一个观察者都要有一个相同名称的类似的 Update的方法。

所有,委托模式就出现了,本质上讲,委托模式是一个特殊的观察者模式的。

委托模式【注意这里委托里面的函数要和被委托的类里面要委托的方法参数列表和返回值要相同!】,

下面是一个委托的例子

Interface subject 

{

Void notify();

String  SubState()

{

Get;

Set;

}

}

Class  Boss :Sbujict 

{

Public  event EventHandler  Updater;

Private  string  action;

Public void Notify()

{

Uptatte();

}

Public  string  SubjectState()

{

Get {return   this.action;}

Set {this.action = Value;}

}

}

Public class NBAObserver

{

Private string name;

Private Subject sub

Public NBAObserver(string name,Subject sub)

{

Name=name;

Sub=sub;

}

Public void CloseTV()

{

}

}

Main()

{

Boss  b=new Boss();

//注意这里的事件模型 B.update updata是一个EventHandler的对象。

B.update+=new EventHandler(new  NBAObserver("ddd",b).CloseTV());

b.sbujectState="i  am  coming ...";

b.Notify();

}

委托就是方法的引用!一个委托可以打在多个函数,所有的被一次唤起!注意前提:擦拭,返回值。

如果,一个对象的变化要通知别的对象,但是别的对象里要执行的方法名称不同,但是参数和返回值一样,就可以使用委托模式!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值