####代理模式####
//明星唱歌、跳舞的接口
public interface IStar{
void sing();
void dance();
}
public class Star implements IStar{
private String name;
//构造方法
//set、get方法
void sing(){
System.out.println(getName()+"正在唱歌");
}
void dance(){
System.out.println(getName()+"正在跳舞");
}
}
public class StarProxy implements IStar{
private Star star;
//构造方法
//set、get方法
}
测试:
<1>代理和歌星同时实现统一接口.
<2>代理含有歌星成员变量。
<3>创建star,将star传递给代理,调用代理的方法。
升级后的代理程序:
package java1.daili; public class StarProxy implements IStar { private Star star; int num; public StarProxy(Star star){ this.star = star; } public Star getStar() { return star; } public void setStar(Star star) { this.star = star; } @Override public void sing() { if(isDo()){ System.out.println("我是代理,我收到了唱歌请求"); star.sing(); System.out.println("唱歌完毕"); } } @Override public void dance() { if(isDo()){ System.out.println("我是代理,我收到了跳舞请求"); star.dance(); System.out.println("跳舞完毕"); } } public boolean isDo(){ if(num>3){ System.out.println("明星累了"); return false; }else { num++; return true; } } }