• 设计模式之静态代理模式


    举个栗子:

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

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

    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();
        }
    }
  • 相关阅读:
    那些创业的艰辛整理
    一个成功的研发团队应具备的9大属性
    如何将 Linux 系统转移至 LVM 卷
    如何在 Linux 上永久挂载一个 Windows 共享
    怎样在 Chromebook 上安装 Linux 系统?
    1087 有多少不同的值 (20 分)C语言
    1052 卖个萌 (20 分)C语言
    1064 朋友数 (20 分)C语言
    1045 快速排序 (25 分)C语言
    1048 数字加密 (20 分)C语言
  • 原文地址:https://www.cnblogs.com/yinbiao/p/10169851.html
Copyright © 2020-2023  润新知