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();
        }
    }
  • 相关阅读:
    做才是得到
    常用工具汇总
    迎接2017
    新年礼物
    2017
    asp.net core 日志
    板子|无向图的割点
    11/06信竞快乐模拟赛
    动态规划复习
    894D
  • 原文地址:https://www.cnblogs.com/yinbiao/p/10169851.html
Copyright © 2011-2022 走看看