zoukankan      html  css  js  c++  java
  • 代理模式(Proxy) 静态

    代理模式分为静态和动态代理

    由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。

    所以说静态代理,主要是自己写代理子类。比如:

    有一个图书接口:

    public interface Book{
        void read(String name);
    }

    一个图书实现类:

    public class BookImpl implement Book{
        @Override
      public void read(String name){
            System.out.printIn("阅读"+name);
        }      
    }

    一个图书代理类:

    public class BookProxy implement Book{
      private Book bookImpl;
      public BookProxy(Book bookImpl){
            this.bookImpl = bookImpl;
        }
       @Override
       public void read(String name){
         //这里就可以做自己要做的事,比如代理方法之前做什么
          bookImpl.read(name);
        //代理方法之后做什么   
      }      
    }

    main方法测试

    public class Main{
      public static void main(String[] args){
           Book bookImpl = new BookImpl();
           Book proxy = new BookProxy(bookImpl);
           proxy.read("aaa");   
        }   
    }    

    静态代理类优缺点 

    • 优点:
    1. 业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
    • 缺点:
    1. 代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。 
    2. 如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。 
  • 相关阅读:
    Concurrent
    Java多线程状态切换
    Java中volatile如何保证long和double的原子性操作
    协程与线程
    线程饥饿
    线程活锁
    线程死锁
    Java Thread之start和run方法的区别
    ThreadLocal内存泄漏
    interrupt和interrupted和isInterrupted的区别
  • 原文地址:https://www.cnblogs.com/LixiaoFeng1650062546/p/11474103.html
Copyright © 2011-2022 走看看