zoukankan      html  css  js  c++  java
  • Java静态代理

    场景:

    以结婚为例:

    小明要结婚了, 小明只需要专注于结婚这个事情, 别的事情比如婚礼现场的布置等等可以交给婚庆公司来做.

    两个类: 小明, 婚庆公司.

    一个接口: 结婚.

    两个类都需要实现结婚这个接口, 只不过专注的事情不一样.

    婚庆公司需要私有化一个小明,就相当于小明在这个婚庆公司下了单.

    package com.smile.test.staticpocxy;
    
    public class StaticProxy {
        public static void main(String[] args) {
            MarryCompany marryCompany = new MarryCompany(new You());
            marryCompany.happyMarry();
        }
    
    }
    // 结婚
    interface Marry{
        void happyMarry();
    }
    // 小明
    class You implements Marry{
    
        @Override
        public void happyMarry() {
            System.out.println("结婚了,真开心");
        }
    }
    // 婚庆公司
    class MarryCompany implements Marry{
        private Marry marry;
    
        public MarryCompany(Marry marr){
            this.marry = marr;
        }
    
        @Override
        public void happyMarry() {
            before();
            this.marry.happyMarry();
            after();
        }
    
        private void after() {
            System.out.println("婚庆公司收钱");
        }
    
        private void before() {
            System.out.println("布置现场");
        }
    }
    
    输出结果:
    布置现场
    结婚了,真开心
    婚庆公司收钱
    
    Process finished with exit code 0
    

    真实对象,代理对象都要实现同一个接口.

    代理对象要代理真实角色.

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

    真实对象专注做自己的事.

  • 相关阅读:
    [转]windows Mobile使用ActiveSync上网
    C++剪切板操作
    jdk1.8源码分析hashMap
    【杂项】VMware 虚拟机安装ubuntu 16.04教程
    【Linux命令】数据流重定向
    【ceph | 运维】crush相关命令
    【Linux命令】更改hostname
    【Linux命令】sed命令
    【Linux命令】vim基本快捷键
    【Linux命令】install
  • 原文地址:https://www.cnblogs.com/lvzl/p/14665675.html
Copyright © 2011-2022 走看看