设计模式有很多,我们从最初的开始说起,今天说一下代理模式其一——静态代理。
package TestProxy;
/**
* 设计模式之代理模式-静态代理
* create by c_pown on 2020-06-20
*/
public class ProxyTest {
public static void main(String[] args) {
//只需创建代理对象,并传入被代理对象即可实现静态代理
WiddingCompany company = new WiddingCompany(new Cpown());
company.marry();
}
}
/**
* 首先写一个功能接口比如结婚
*/
interface Marry{
/**结婚**/
void marry();
}
/**
* 被代理类 Cpown ,实现Marry接口并重写marry方法
*/
class Cpown implements Marry{
/**
* 需要去做的事情
*/
@Override
public void marry() {
System.out.println("Cpown今天结婚啦");
}
}
/**
* 代理类 婚庆公司 ,也实现Marry接口并重写marry方法
*/
class WiddingCompany implements Marry{
private Cpown cpown;
//创建构造器
public WiddingCompany(Cpown cpown) {
this.cpown = cpown;
}
//同样要去帮代理对象做的事情
@Override
public void marry() {
before();
cpown.marry();
after();
}
//可以对待对象进行包装,做一些其他的事情
private void after() {
System.out.println("婚后一堆屁事");
}
private void before() {
System.out.println("婚前一堆屁事");
}
}
上面是一个简单的静态代理实例,我们被代理对象是自己需要去结婚,这个事情我们是交给婚庆公司去给我们代办的,我们作为被代理对象,只需要出席婚礼,其他的事情交由代理对象处理即可。
婚前一堆屁事
Cpown今天结婚啦
婚后一堆屁事
总结:
<1>真实对象和代理对象需要实现同一个接口。
<2>代理对象要代理真实角色。
好处:代理对象可做很多真实对象做不了的事情,从而不污染真实对象,真实对象只需要专注做自己的事情。