
1
Chương
Chương 16
16
Ủ
Ủy nhi
y nhiệ
ệm h
m hà
àm v
m và
à
s
sự
ựki
kiệ
ện
n
Nguy
Nguyễ
ễn H
n Hồ
ồng Phương
ng Phương
Khoa CNTT,
Khoa CNTT, ĐHBKHN
ĐHBKHN

2
S
Sử
ửd
dụ
ụng khai b
ng khai bá
áo
o ủ
ủy nhi
y nhiệ
ệm h
m hà
àm
m
v
và
àc
cá
ác th
c thể
ểhi
hiệ
ện
n
•Một ủy nhiệm hàm là một kiểu trông
và hành xử như 1 phương thức.
•Ủy nhiệm hàm là 1 sựtrừu tượng của
1 phương thức.
•Ta cóthểcoi nó là 1 phương thức
thông minh.

3
V
Ví
íd
dụ
ụkhông d
không dù
ùng
ng ủ
ủy nhi
y nhiệ
ệm h
m hà
àm
m
•Viết 1 chương trình cứmỗi giây thực
hiện 1 tác vụ
class Ticker{
public void Attach(Subscriber newSub){subscribers.Add(newSub);}
public void Detach(Subscriber newSub){subscribers.Remove(newSub);}
private void Notify(){
foreach(Subscriber s in subscribers){s.Tick();}
}
......
private ArrayList subscribers = new ArrayList();
}

4
V
Ví
íd
dụ
ụkhông d
không dù
ùng
ng ủ
ủy nhi
y nhiệ
ệm h
m hà
àm
m
class Subscriber{
public void Tick(){......}
}
class ExampleUse{
static void Main(){
Ticker pulsed = new Ticker();
Subscriber worker = new Subscriber();
pulsed.Attach(worker);
.......
}
}

5
Nâng c
Nâng cấ
ấp
p
interface Tickable{
void Tick();
}
class Ticker{
public void Attach(Subscriber newSub){subscribers.Add(newSub);}
public void Detach(Subscriber
newSub){subscribers.Remove(newSub);}
private void Notify(){
foreach(Tickable t in subscribers){ t.Tick(); }
}
......
private ArrayList subscribers = new ArrayList();
}

