- 代理模式的定义:给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用
- 代理模式的好处:可以通过给代理类增加额外的功能来扩展委托类的功能
- 静态代理例子如下:
package com.hambo;
/**
* 代理模式
* 1.真实角色
* 2.代理角色,持有真实角色引用
* 3.二者实现相同的接口
*/
public class MerryTest {
public static void main(String[] args) {
Merry you = new You();
Merry she = new She();
Merry weddingCompany = new WeddingCompany(you);
Merry weddingCompany2 = new WeddingCompany(she);
weddingCompany.merry();
weddingCompany2.merry();
}
}
// 接口
interface Merry{
void merry();
}
// 真是角色1
class You implements Merry {
@Override
public void merry() {
System.out.println("You and 景甜 结婚了");
}
}
// 真是角色2
class She implements Merry {
@Override
public void merry() {
System.out.println("She and 刘德华 结婚了");
}
}
// 代理角色
class WeddingCompany implements Merry {
Merry merry ;
public WeddingCompany(Merry merry) {
this.merry = merry;
}
private void before() {
System.out.println("布置场景,主持婚礼");
}
private void after(){
System.out.println("才艺表演,让客人们吃的舒心,玩的开心");
}
@Override
public void merry() {
before();
merry.merry();
after();
}
}