6.2Java静态代理设计模式

Posted 俊king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.2Java静态代理设计模式相关的知识,希望对你有一定的参考价值。

6.2Java静态代理设计模式

引用图片说明

静态代理和动态代理的区别

静态代理

特点:

  • 已经写好了的类,直接拿来用

动态代理

特点:

  • 在运行过程中动态构建的

  • 临时构建的

静态代理的作用
  • 记录日志

  • 监控资源占用空间

实例
package iostudy.thread;

/**
* 静态代理
* 1、真实角色
* 2、代理角色
* 实现代理的条件:
* 两个角色实现相同的接口(公共接口)才能代理行为
* 执行方法:
* 实例化实现类对象,调用方法--->在这个例子当中通过构造器传入真实对象
* 相当于实现类是代理类,真实的对象才是实现类对象
* @since JDk 1.8
* @date 2021/6/2
* @author Lucifer
*/
public class StaticProxy {
   public static void main(String[] args) {
       new WeddingCompany(new You()).happyMarry();

       //类似于:
       //new Thread(线程实例化对象).start();
  }
}

/**
* 定义一个结婚接口
*/
interface Marry{

   /*定义接口里面的方法*/
   void happyMarry();

}

/**
* 写一个真实角色类
*/
class You implements Marry{

   /*重写接口当中的方法*/
   @Override
   public void happyMarry(){
       System.out.println("Marry Successfully!!!");
  }

}

/**
* 建立一个代理角色
*/
class WeddingCompany implements Marry{
   /*
   代理人的意思是:
   1、代理人本身不做行为
   2、代理真实角色做行为
   */

   //代理人必须有一个目标对象--->真实角色
   private Marry target;
   /*在构造器中加入真实角色*/
   public WeddingCompany(Marry target){
       this.target = target;
  }

    /*重写接口当中的方法*/
   @Override
   public void happyMarry(){

       /*代理人做准备工作*/
       ready();

       //最终是真实角色执行happy方法
       this.target.happyMarry();

       /*代理人善后*/
       after();

  }

   /*定义代理类要执行的私人方法*/
   /**
    * ready方法
    */
   public void ready(){
       System.out.println("布置桌子!!!");
  }

   /**
    * after方法
    */
   public void after(){
       System.out.println("收拾残局!!!");
  }
}

 

以上是关于6.2Java静态代理设计模式的主要内容,如果未能解决你的问题,请参考以下文章

Spring之代理模式

Java 代理模式讲解

Java之静态代理模式

代理模式(动态)

java 代理模式(静态代理动态代理Cglib代理) 转载

设计模式—静态代理模式(聚合与继承方式比较)