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

    概述

    自己需要做的事,叫别人去帮你做的更好(加料)

    比如:你要结婚,找一个公司代理结婚,结婚的人还是你,但是前后增加了好事,布置炫酷的现场,收尾款等

    使用方法

    这里用结婚流程来说

    • 定义接口,即结婚的业务
    • 定义结婚对象实现接口中的方法
    • 定义代理结婚的公司实现接口中的方法,并传入代理对象,调用代理对象
    • 增加前后的一些布置
    • 创建代理类负责启动

    实例

    模拟结婚代理

    /**
     * @function 静态代理模式
     * @class StaticProxy 启动代理
     *          Marry 结婚接口
     *          You 结婚对象
     *          WeddingCompany 公司代理对象
     */
    public class StaticProxy {
        public static void main(String[] args) {
            //Thread 也是一个代理类 接口Runnable
            new Thread( ()-> System.out.println("I love dudu")).start();
    //        和线程对比
            WeddingCompany weddingCompany = new WeddingCompany(new You());
            weddingCompany.HappyMarry();
        }
    }
    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("结婚之后,收尾款");
        }
    }
    

    一句话

    用同样的接口 把你要做的事情 加上大餐 的包装起来使用,更加舒服,省去烦恼,坐等安排。

  • 相关阅读:
    iOS.CM5.CM4.CM2
    iOS.Library.Architecture
    iOS.Info.plist
    iOS.ARM-Assembly
    Tools.Png.Compression
    MacDev.GetArchOfLibrary
    iOS.C
    iOS.Notification.Bar.Color
    iOS.-.cxx_destruct
    iOS.UITableView.SectionIndex
  • 原文地址:https://www.cnblogs.com/gbhh/p/13768073.html
Copyright © 2011-2022 走看看