java设计模式-代理模式

本文详细介绍了代理模式的概念、结构和在Java中的应用,包括静态代理和动态代理。动态代理分为JDK动态代理和CGLib,它们在功能和性能上各有特点,适用场景不同。JDK代理需要目标对象实现接口,CGLib则通过子类化实现。文章还讲解了如何使用InvocationHandler接口和Proxy类生成代理对象。
摘要由CSDN通过智能技术生成

一.代理模式

1.定义:
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
2.模式结构:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
在这里插入图片描述

二.静态代理

1.什么是静态代理
静态代理就是在程序运行前,代理类class文件就已经存在了
2.静态代理的简单实现:

//抽象主题
public interface Movie {
   
    void play();
}

//真实主题
public static class RealMovie implements Movie {
   
    @Override
    public void play() {
   
        // TODO Auto-generated method stub
        System.out.println("您正在观看电影 《肖申克的救赎》");
    }
}

//代理
public static class Cinema implements Movie {
   

    RealMovie movie;
    public Cinema(RealMovie movie) {
   
        super();
        this.movie = movie;
    }

    @Override
    public void play() {
   
        guanggao(true);    // 代理类的增强处理
        movie.play();     // 代理类把具体业务委托给目标类,并没有直接实现
        guanggao(false);    // 代理类的增强处理
    }

    public void guanggao(boolean isStart){
   
        if ( isStart ) {
   
            System.out.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值