//抽想角色定义代理角色与实际角色的对外开放的方法:
//真实角色:
//代理角色:
代理角色可以做很多东西,但不会做真实角色的独有属性(如唱歌)
只有通过真实角色的应用,调用真实角色方法,才可以真正的对症是角色
的代理:
private RealStar realStar;
public Proxy(RealStar realStar){
this.realStar= realStar;
}
客户:
根据测试结果,只有sing()是本人执行,其他都有代理角色执行
类图:
使用Runnable接口创建线程即使用的使用静态代理模式:
1、抽象角色:
public interface Runnable
2、真实角色,自己创建的Programmer类
public class Programmer implements Runnable
3、代理角色:
public class Threadextends Object implements Runnable
满足真实角色与代理角色都实现抽象角色(Ruunable).
真是角色:
代理角色,持有真是角色的引用:
创建代理角色并持有真实角色的引用,启动线程
new Thread(p).start();
//使用Runnable接口创建线程,便于资源共享
例如:窗口售票,有多个黄牛(代理角色),共同访问共享资源(票),