【JAVA设计者模式之-静态代理模式】
静态代理模式总结:
1、真实对象和代理对象都需要实现同一个接口
2、代理对象要代理目标真实对象
好处:
1、代理对象可以做很多真实对象做不了的事情
2、真实对象专注做自己的事情
package com.agentliu.demo02; /** *@className: StaticProxy *@description: 线程的静态代理模式 *@author: jj.liu *@create: 2021-10-14 09:46 */ //静态代理模式总结: //真实对象和代理对象都需要实现同一个接口 //代理对象要代理目标真实对象 //好处: //1、代理对象可以做很多真实对象做不了的事情 //2、真实对象专注做自己的事情 public class StaticProxy { public static void main(String[] args) { //创建婚庆公司对象,将“你”通过构造方法参数的形式传给婚庆公司,婚庆公司代理你去完成结婚这件事情。 new WeddingCompany(new You()).HappyMarry(); //线程的创建方式也是通过静态代理模式来实现的 // new Thread(new Runnable() { // @Override // public void run() { // System.out.println("线程实现。。。"); // } // }).start(); //通过lamda表达式简写为: new Thread(() ->System.out.println("线程实现。。。")).start(); } } interface Marry{ void HappyMarry(); } //真实结婚对象 class You 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(); this.target.HappyMarry(); after(); } private void before() { System.out.println("婚庆公司在结婚之前,布置婚礼现场。。。"); } private void after() { System.out.println("婚庆公司在结婚之后,打扫战场。。。。"); } }