1.说明:借用歌星与经济人(代理)在现实生活中的关系来阐述代理模式;
2.代码
2.1明星接口
public interface Star{
void confer();
void signContract();
void bookTicket();
void sing();
void collectMoney();
}
2.2真实明星实现明星接口
package 代理模式1.静态代理;
public class RealStar implements Star {
@Override
public void confer() {
// TODO Auto-generated method stub
System.out.println("RealStar.confer()");
}
@Override
public void signContract() {
// TODO Auto-generated method stub
System.out.println("RealStar.signContract()");
}
@Override
public void bookTicket() {
// TODO Auto-generated method stub
System.out.println("RealStar.bookTicket()");
}
@Override
public void sing() {
System.out.println("RealStar(周杰伦).sing()");
}
@Override
public void collectMoney() {
// TODO Auto-generated method stub
System.out.println("RealStar.collectMoney()");
}
}
2.3代理人类
package 代理模式1.静态代理;
public class ProxyStar implements Star{
private Star star;
public ProxyStar(Star real){
this.star = real;
}
@Override
public void confer() {
// TODO Auto-generated method stub
System.out.println("ProxyStar.confer()");
}
@Override
public void signContract() {
// TODO Auto-generated method stub
System.out.println("ProxyStar.singContract()");
}
@Override
public void bookTicket() {
// TODO Auto-generated method stub
System.out.println("ProxyStar.bookTicket()");
}
@Override
public void sing() {
// TODO Auto-generated method stub
star.sing();
}
@Override
public void collectMoney() {
// TODO Auto-generated method stub
System.out.println("ProxyStar.collectMoney()");
}
}
2.4Client类中进行测试
package 代理模式1.静态代理;
public class Client {
public static void main(String[] args) {
Star real = new RealStar();
Star proxy = new ProxyStar(real);
proxy.bookTicket();
proxy.collectMoney();
proxy.sing();
}
}
3.输出结果:
ProxyStar.bookTicket()
ProxyStar.collectMoney()
RealStar(周杰伦).sing()