简介
- Proxy代理模式是一种结构型设计模式。通过代理模式可以实现程序之间的解耦,可以解决在直接访问对象时带来的程序之间耦合度增大的问题。
- 按照代理的创建时期,代理类分为两种:
- 静态代理:在编译期,手动创建代理类,而不是由编译器生成代理类。
- 动态代理:在运行期,运用反射机制动态而生成代理类。
静态代理
- 优点
- 静态代理可以将目标类和目标方法封装起来,有隐蔽的作用。
- 缺点
- 静态代理类只能为特定的接口服务。
- 如想要为多个接口服务则需要建立很多个代理类。
目录结构
- cn.water
- main
- java
- IProducer.java(接口)
- Producer.java(实现类)
- ProxyProducer.java(代理类)
- test
接口
IProducer.java
package cn.water.StaticProxy;
public interface IProducer {
void saleProduct(float money);
void afterService(float money);
}
实现类
Producer.java
package cn.water.StaticProxy;
public class Producer implements IProducer {
public void saleProduct(float money) {
System.out.println("生产者:通过[销售],获得了"+money+"元");
}
public void afterService(float money) {
System.out.println("生产者:通过[售后],获得了"+money+"元");
}
}
代理类
ProxyProducer.java
package cn.water.StaticProxy;
public class ProxyProducer implements IProducer {
private Producer producer = new Producer();
public void saleProduct(float money) {
System.out.println("消费者:消费了"+money+"元");
producer.saleProduct(money * 0.2f);
}
public void afterService(float money) {
System.out.println("消费者:消费了"+money+"元");
producer.afterService(2