• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
机械佬也想学编程
博客园    首页    新随笔    联系   管理    订阅  订阅

静态代理

静态代理

静态代理要求:

  • 代理对象要和真实对象实现同一个接口

  • 代理对象要代理真实对象

好处:

  • 代理对象可以做很多真实对象做不了的事情

  • 真实对象专注做自己的事情

public class StaticProxy {
   public static void main(String[] args) {
       new WeddingCompany(new Person()).happyMarry();
       // 线程代理与婚庆公司代理类似,也是一种静态代理,Thread实现了Runnable接口,传入的对象也要求实现Runnable接口
       new Thread(new Runnable() {
           @Override
           public void run() {
               System.out.println("我爱你");
          }
      }).start();
  }
}
​
interface Marry{
   // 人间四大喜事————久旱逢甘露、他乡遇故知、洞房花烛夜、金榜提名时
   void happyMarry();
}
​
// 真实结婚角色
class Person implements Marry{
​
   @Override
   public void happyMarry() {
       System.out.println("要结婚了,超开心!");
  }
}
​
// 婚庆公司,代理结婚事务
class WeddingCompany implements Marry{
   private Marry target;
   public WeddingCompany(Marry target){
       this.target = target;
  }
​
​
   @Override
   public void happyMarry() {
       before();
       target.happyMarry();
       after();
  }
​
   private void before() {
       System.out.println("结婚之前,布置现场");
  }
​
   private void after() {
       System.out.println("结婚之后,收尾款");
  }
}

使用Lambda表达式

posted @ 2020-11-18 17:14  机械佬也想学编程  阅读(177)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3