多线程中的静态代理模式

静态代理的例子:

 1 /**
 2  * 1.真实角色
 3  * 2.代理角色
 4  * 3.共同实现的接口
 5  * @author tele
 6  *
 7  */
 8 public class StaticProxy {
 9         public static void main(String[] args) {
10             //创建真实角色,可使用接口
11             Marry you = new You();
12             //创建代理角色,代理角色往往要添加新的方法,不建议使用接口创建
13             WeddingCompany company = new WeddingCompany(you);
14             
15             company.marry();
16             
17         }
18 }
19 
20 //接口
21 interface Marry{
22     void marry();
23 }
24 
25 //真实角色
26 class You implements Marry{
27     @Override
28     public void marry() {
29         System.out.println("我结婚了");
30     }
31 }
32 
33 //代理角色,需要持有真实角色的引用
34 class WeddingCompany implements Marry{
35     private Marry you;
36     
37     public WeddingCompany() {
38         super();
39         // TODO Auto-generated constructor stub
40     }
41 
42     public WeddingCompany(Marry you) {
43         super();
44         this.you = you;
45     }
46 
47     @Override
48     public void marry() {
49         you.marry();
50     }
51     
52 }

从上面的例子可以看到,实现静态代理模式时有三个要素

1.真实角色(委托对象)

2.代理角色

3.共同实现的接口

对比以实现Runnable接口的形式创建多线程,可以发现,代理角色Thread类不需要我们创建,我们只需要写委托对象

实现Runnable接口.把委托对象的引用传递给Thread,借助Thread对象来开启线程即可

原文地址:https://www.cnblogs.com/tele-share/p/9464295.html