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

    举个栗子:

    比如你结婚,婚庆公司帮你代理一些事情(布置婚房,准备午餐等),虽然婚前公司做的,但是是为你而做的

    静态代理的设计模式的三要素:

    1.真实角色

    2.代理角色:代理角色需要具有真实角色的引用,这样才能实现对真实角色的代理

    3.真实角色和代理角色要实现共同的接口

    看个样例:

    Staticproxy.java

    package 设计模式;
    
    /**
     * @author:yb
     * @version 创建时间:2018-12-24 下午4:48:03 类说明
     */
    /*
     * 静态代理 设计模式 
     * 1.真实角色 
     * 2.代理角色:必须持有真实角色的引用,这样才能代理真实角色 
     * 3.二者实现了相同的接口
     */
    public class StaticProxy {
    
        public static void main(String[] args) {
            // 应用该代理
            // 1.创建真实角色
            You you = new You();
            // 2.创建代理角色+引用真实角色的代理:you
            WeddingCompany weddingCompany = new WeddingCompany(you);
            // 3.执行任务
            weddingCompany.marry();
    
            /*
             * 虽然是执行的weddingCompany的marry() 但是仍是对you这个对象的的操作
             */
        }
    
    }
    
    // 共同的接口
    interface Marry {
        void marry();// 公共的抽象方法
    
    }
    
    // 真实角色
    class You implements Marry {
    
        public void marry() {
            System.out.println("you marry whith xxx!");
        }
    }
    
    // 代理角色
    class WeddingCompany implements Marry {
    
        private Marry you;
    
        // 有参构造,因为代理要有真实角色的引用才能实现代理
        public WeddingCompany(Marry you) {
            this.you = you;
        }
    
        private void before() {
            System.out.println("Decorate the wedding room");
        }
    
        private void after() {
            System.out.println("Arranging lunch");
        }
    
        public void marry() {
            you.marry();
            before();
            after();
        }
    }
  • 相关阅读:
    跟着百度学习之ThinkPHP的认识/初窥
    Apache Rewrite 拟静态
    最新PHPcms9.6.0 任意文件上传漏洞
    最新phpcms v9.6.0 sql注入漏洞分析
    蓝牙攻击-基础篇
    emblog后台拿shell
    绕过云盾找真实IP-找真实IP-绕过CDN
    程序员最重要的品质是什么?
    VC++ 6.0中添加库文件和头文件
    程序的链接与装载
  • 原文地址:https://www.cnblogs.com/yinbiao/p/10169851.html
Copyright © 2011-2022 走看看