设计模式(五)代理模式

本文详细介绍了代理模式的原理与应用,包括静态代理、JDK动态代理和CGLIB动态代理。通过案例分析了静态代理的火车站购票场景,动态代理则涉及了Proxy类的使用以及CGLIB的代理实现。对比了动态代理与静态代理、JDK代理与CGLIB代理的优缺点,并列举了代理模式在远程通信、防火墙和权限控制等场景的应用。
摘要由CSDN通过智能技术生成

代理模式

黑马程序员:https://www.bilibili.com/video/BV1Np4y1z7BU?p=55

概述

由于某些原因需要给某对象提供一个代理以控制该对象的访问。
这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象的中介。
在这里插入图片描述
Java中的代理模式按照代理类生成时机不同分为:

  • 静态代理 (编译期生成)
  • 动态代理 (运行时动态生成) 分为JDK代理和CGLib代理两种

静态代理

例:火车站买票

如果要买火车票的话,需要去火车站买票,比较麻烦。我们可以去火车站的多个代售点买票。

UML类图

在这里插入图片描述

代码实现

SellTickets(抽象主题类)

public interface SellTickets {
   
    void sell();
}

TrainStation(真实主题类)

public class TrainStation implements SellTickets{
   
    @Override
    public void sell() {
   
        System.out.println("火车站卖票");
    }
}

ProxyPoint(代理类)

public class ProxyPoint implements SellTickets{
   
    //声明火车站对象
    private TrainStation trainStation=new TrainStation();
    @Override
    public void sell() {
   
        System.out.println("代售点收取服务费用!!!");
        trainStation.sell();
    }
}

Client(测试类)

public class Client {
   
    public static void main(String[] args) {
   
        //创建代理对象
        ProxyPoint proxyPoint = new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值