Java内功修炼系列一代理模式

2022-12-07,,,,

代理模式是JAVA设计模式之一,网上设计模式相关的博文铺天盖地,参考它们有助于自己理解,但是所谓“尽信书不如无书”,在参考的同时也要思考其正确性,写博客也是为了记录自己理解知识点的思路历程和心路历程,所以在经过调研、实践之后能把自己所掌握和理解的东西写下来,无论对错,错了只能说明当下的理解不够完整,更重要的是能够在以后遇到相同的问题时回头看看,反思当初这么写到底有没有问题,毕竟是自己写的,错了还可以进行纠正,想必每个写博客记录自己学习过程的人,都不会刻意去写误导别人的东西,有点扯远了,其实想说的就是不为写而写,更不为凑数而写,要真实地去记录思考的过程,以后的博客也要遵循此原则。

说正事了。代理模式是一种模式,所谓的代理在我们日常生活中也是很常见的,比如我们依靠中介公司租房的时候,不会直接跟房东签署协议,而是通过中介间接地跟房东租房,在租房的过程中房东对我们是不可见的,跟我们直接交涉的人是中介,中介相当于代理,房东把房子的出租权限给中介,让中介代理他出租自己的房子,这就是代理模式。在java中代理模式分为静态代理和动态代理两种,动态代理又有JDK和CGLIB两种实现方式,下面依次介绍。

一、静态代理

静态代理的实现要求代理对象和真实对象实现同一个接口,然后在代理类中维护一个指向接口的真实对象,调用真实对象的实现逻辑即可,这样当用户向代理对象发送请求的时候,从用户角度来看处理请求逻辑的是代理对象,屏蔽了真实对象,但是只有代理对象知道,真正做事情的是真实对象。所以可以分三步实现静态代理:

1⃣️创建一个接口;

2⃣️创建代理类和真实类,均实现接口,这是类实现的接口中完成用户请求,代理对象维护一个指向接口的真实对象,并调用其实现;

3⃣️用户直接向代理对象发请求;

下面以租房为例,用代码来实现。

首先,创建租房接口:

 /*
* 定义一个出租房屋接口
*/
public interface RentalHouseInterface {
public void rentalHouse();
}

然后创建代理类和真实类实现接口,真实类实现请求逻辑并在代理类中维护指向接口的真实类:

 /*
* 创建一个房东类,实现出租房屋接口,房屋的地址和接口都是由房东规定,所以房东才是真实对象
*/
public class Landlord implements RentalHouseInterface{
private String address;//房屋所处的位置
private int price;//出租房屋的价格

public Landlord(String address,int price) {
this.address = address;
this.price = price;
}
/**
* 房东给出

Java内功修炼系列一代理模式的相关教程结束。

《Java内功修炼系列一代理模式.doc》

下载本文的Word格式文档,以方便收藏与打印。