静态代理模式:
模式分析
代理模式,顾名思义就是有一个代理, 这个代理会帮助你做一些事情, 那这样的动作或者行为怎么描述呢?用我们的java语言来描述吧, 代理和目标本身(需要被代理的对象)应该都有一个共同的接口, 因为它们要做同一件事情。 除此之外, 代理对象中应该包含目标对象,只要这样,代理对象才能够帮助目标对象完成它本身所要完成的事情。
应用场景
代理对象除了帮助目标对象完成它必须要做需要的事情之外, 还可以帮助目标对对象做一些其他的事情。
例子
目标对象:人
代理对象:婚庆公司
被代理的事情: 结婚
分析:人和婚庆公司都需要有结婚这个方法, 或者实现这个接口, 这样才能代理。 然后婚庆公司需要拥有被代理的对象, 这样才能帮助人结婚, 除了帮助结婚之外, 代理对象(婚庆公司)还可以做一些其他的事情。
package com.Kuang;
/**
* @author cyt
* @create 2020-03-07 9:42
*/
/**
* 代理对象
* 目标对象
* 目标对象和代理对象都需要实现一个公共的接口
* 代理对象可以帮助目标对象来做一些事情, 这样目标对象就可以专注于自己的事情中了。
* 要完成这样, 代理对象就需要能够得到目标对象
*/
public class StaticProxy {
public static void main(String[] args) {
widding widding = new widding(new you());
widding.happymarry();
}
}
// 接口
interface Marry {
void happymarry();
}
// 目标对象, 真实对象。
class you implements Marry {
@Override
public void happymarry() {
System.out.println("Cyt要结婚了");
}
}
// 代理对象, 它需要得到目标对象(真实对象), 然后帮助真实对象做事情。
// 除了目标对象的事情之外, 它还可以做一些额外的事情来。
class widding implements Marry {
private Marry marry;
public widding(Marry marry) {
this.marry = marry;
}
@Override
public void happymarry() {
befrom();
this.marry.happymarry();
after();
}
void after() {
System.out.println("结婚之后。。。。");
}
void befrom() {
System.out.println("结婚之前。。。。");
}
}