静态代理

概述:
静态代理: 代理对象是确定的
委托者角色:实现抽象角色,定义委托角色所要实现的业务逻辑,供代理角色调用。
代理角色:实现抽象角色,是委托角色的代理,通
过委托角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
抽象角色:声明委托角色实现的业务方法。
接下来我们以西门案例进行介绍.
西门想找金莲happy,但是又不能直接去找(显然不合理,武大郎会跟西门拼命) 所以就找了王婆做中间代理,以做衣服的名义将两人约到房间.
王婆除了有代理的功能外应该还有自己特有的功能,;例如:开房间,打扫战场.
以下是代码实现.

定义一个接口

public interface FindHappy {// 抽象角色
    void happy();
}

定义一个金莲类

public class JinLian implements FindHappy {
    @Override
    public void happy() {
        System.out.println("金莲和西门在happy...");
    }
}

定义一个王婆类

public class WangPo implements FindHappy {

    FindHappy findHappy;

    public WangPo(FindHappy findHappy) {
        this.findHappy = findHappy;
    }

    public void openHouse(){
        System.out.println("王婆以做衣服的名义把2人约到房间...");
    }

    @Override
    public void happy() {
        openHouse();
        // 让委托者happy()  金莲
        findHappy.happy();
        clear();
    }

    public void clear(){
        System.out.println("王婆打扫战场...");
    }

}

定义一个西门类

public class XiMen {
    public static void main(String[] args) {
        /**
            静态代理: 代理对象是确定的
                委托者角色:实现抽象角色,定义委托角色所要实现的业务逻辑,供代理角色调用。
                代理角色:实现抽象角色,是委托角色的代理,通
                        过委托角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
                抽象角色:声明委托角色实现的业务方法。

         */
       /* JinLian jinLian = new JinLian();
        jinLian.happy();*/

       JinLian jinLian = new JinLian();
     //   YanPoXi yanPoXi = new YanPoXi();
        WangPo wangPo = new WangPo(jinLian);
        wangPo.happy();
    }
}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值