设计模式之代理模式

为其他对象提供一种代理以控制对这个对象的访问
先上图

注:该图画的是大话设计模式中的代理追女孩的图,这里Pursuit里面维护了一个SchoolGril,这个对象是通过Proxy传递过来的

接下来上码:
GiveGift

1
2
3
4
5
public interface GiveGift {
public void giveDolls();
public void giveFlowers();
public void giveChocolate();
}

Pursuit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Pursuit implements GiveGift{
private SchoolGirl mm;
public Pursuit(SchoolGirl mm){
this.mm = mm;
}
@Override
public void giveDolls() {
System.out.println("送洋娃娃!");
}
@Override
public void giveFlowers() {
System.out.println("送花");
}
@Override
public void giveChocolate() {
System.out.println("送巧克力");
}
}

Proxy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Proxy implements GiveGift{
private Pursuit gg;
public Proxy(SchoolGirl mm){
this.gg = new Pursuit(mm);
}
@Override
public void giveDolls() {
gg.giveDolls();
}
@Override
public void giveFlowers() {
gg.giveFlowers();
}
@Override
public void giveChocolate() {
gg.giveChocolate();
}
}

Clinet

1
2
3
4
5
6
7
8
9
public class Client {
public static void main(String [] args){
SchoolGirl mm = new SchoolGirl();
Proxy proxy = new Proxy(mm);
proxy.giveChocolate();
proxy.giveDolls();
proxy.giveFlowers();
}
}