静态代理的例子:
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
时间: 2024-10-09 20:22:45