静态代理模式
定义:通过代理对象访问目标对象,区别于动态代理临时生成代理类,静态代理的类是写好的。
用途:记录日志、增强服务
思想:
1、上层公共接口
2、真实对象,实现上层接口
3、代理对象,实现上层接口
1、上层公共接口
package com.hello.static_proxy;
/**
* 上层接口
*/
public interface Marry {
void happyMarry();
}
2、真实对象,实现上层接口
package com.hello.static_proxy;
/**
* 真实角色
*/
public class You implements Marry {
@Override
public void happyMarry() {
System.out.println("恭喜你结婚了");
}
}
3、代理对象,实现上层接口
package com.hello.static_proxy;
/**
* 代理对象
*/
public class WeddingMarry implements Marry {
// 目标对象
private You you;
public WeddingMarry(You you) {
this.you = you;
}
@Override
public void happyMarry() {
ready();
you.happyMarry();
after();
}
void ready() {
System.out.println("准备猪窝");
}
void after() {
System.out.println("闹洞房");
}
}
4、客户端
package com.hello.static_proxy;
/**
* 静态代理模式:类是写好的。【动态代理模式:类是临时生成的】
* 1、上层接口
* 2、真实角色,实现上层接口
* 3、代理角色,实现上层接口
*/
public class proxy {
public static void main(String[] args) {
WeddingMarry marry = new WeddingMarry(new You());
marry.happyMarry();
}
}
// 运行结果:
// 准备猪窝
// 恭喜你结婚了
// 闹洞房
网友评论