代理模式
黑马程序员: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