设计模式之静态代理模式

举个栗子:

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

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

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();
    }
}
posted @ 2018-12-24 17:26  西*风  阅读(192)  评论(0编辑  收藏  举报