1. 程式人生 > >多線程中的靜態代理模式

多線程中的靜態代理模式

形式 對比 proxy this 開啟 args rate ted 接口

靜態代理的例子:

 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對象來開啟線程即可

多線程中的靜態代理模式