代理模式(静态代理)(设计模式9)

//抽想角色定义代理角色与实际角色的对外开放的方法:

//真实角色:

//代理角色:

代理角色可以做很多东西,但不会做真实角色的独有属性(如唱歌)

只有通过真实角色的应用,调用真实角色方法,才可以真正的对症是角色

的代理:

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接口创建线程,便于资源共享
例如:窗口售票,有多个黄牛(代理角色),共同访问共享资源(票),




原文地址:https://www.cnblogs.com/chengbao/p/4813428.html