代理模式核心:代理核心类重复干得事情,核心功能还是由真身类来实现。为了提高数据访问的安全性和提高真身的事情处理专业程度。
代理模式的类与类的关系
功能接口
package com.dasenlin.baidu;
/**
* star所具有的功能
* @author Administrator
*
*/
public interface Star {
void confir();
void signContract();
void bookTicket();
void sing();
void collectMoney();
}
真身的功能
package com.dasenlin.baidu;
public class RealStar implements Star {
@Override
public void confir() {
System.out.println("RealStar.confir");
}
@Override
public void signContract() {
System.out.println("RealStar.signContract");
}
@Override
public void bookTicket() {
System.out.println("RealStar.bookTicket");
}
@Override
public void sing() {
System.out.println("本人真正sing");
}
@Override
public void collectMoney() {
System.out.println("RealStar.collectMoney");
}
}
代理类所具有的功能、
package com.dasenlin.baidu;
public class ProxyStar implements Star {
private Star star;
public ProxyStar(Star star) {
super();
this.star = star;
}
@Override
public void confir() {
System.out.println("RealStar.confir");
}
@Override
public void signContract() {
System.out.println("RealStar.signContract");
}
@Override
public void bookTicket() {
System.out.println("RealStar.bookTicket");
}
@Override
public void sing() {
star.sing();//不能调用他的隔
}
@Override
public void collectMoney() {
System.out.println("RealStar.collectMoney");
}
}
调用方式
package com.dasenlin.baidu;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Star s =new RealStar();
Star st = new ProxyStar(s);
st.sing();
}
}