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
•Mt y nhim hàm là mt kiu trông
hành x như 1 phương thc.
y nhim hàm là 1 stru tưng ca
1 phương thc.
•Ta cóthcoi nó là 1 phương thc
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 cmi giây thc
hin 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();
}