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

    静态代理

    举个例子,比如你去结婚,需要招一家婚庆公司替你安排,这里你就是真实角色,婚庆公司就是代理,你和婚庆公司都要实现结婚的接口

    package MultiProcess;
    
    //真实对象和代理都要实现同一个接口
    //代理对象要代理真实角色
    
    //好处
        //代理对象可以做很多真实对象做不了的事情,真实对象专注做自己的事情
    public class StaticProxy {
        public static void main(String[] args) {
    
            You you = new You();
            WeddingCompany weddingCompany = new WeddingCompany(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("结婚之后,收尾款");
        }
    }
    
    输出:
    结婚之前,布置现场
    要结婚了,超开心
    结婚之后,收尾款
    

    Thread类

    Java中的Thread类也采用了静态代理的方法

    • Thread实现了Runnable的接口,重写了run()函数,目标类也实现了Runnable接口,重写了run()函数。
    • start()函数是Thread类自定义的函数,类似于WeddingCompany中的HappyMarry()函数。其中实现了目标类的run()函数,类似于you对象中的HappyMarry()函数。
    new Thread(()-> System.out.println("实现接口")).start();
    new WeddingCompany(new(you)).HappyMarry();
    
  • 相关阅读:
    用css实现网页背景渐变的代码
    表格特效代码 立体表格 圆角表格 变色的单元格
    谷歌地图离线包尝试
    opensoial google社会化网络API
    在自己网站嵌入各大搜索引擎代码
    利用谷歌搜索建立自己的站内搜索引擎
    Jquery学习
    网站备案 ICP备案流程
    了解JavaScript的类和对象
    QeePHP中modules下的模块ACL配置规则
  • 原文地址:https://www.cnblogs.com/happysml/p/13825282.html
Copyright © 2011-2022 走看看