一、簡介
代理:代理對象主要用來攔截被代理對象的訪問
- 代理對象可以理解爲明星的經紀人,被代理對象可以理解爲某個明星
- 代理對象要持有真實業務對象,即在代理類中創建被代理類的對象
- 代理對象和被代理對象,具備相同的行爲方法. 實現同一個接口
- 代理對象攔截被代理對象的訪問,可以修改訪問的參數 返回值 甚至攔截訪問
二、代碼
1、啓動類
public class StaticProxy {
public static void main(String[] args) {
new WeddingCompany(new You()).happyMarry();
}
}
2、定義接口
interface Marry {
void happyMarry();
}
3、真實角色
// 真實角色
class You implements Marry {
@Override
public void happyMarry() {
System.out.println("我本人結婚了");
}
}
4、代理角色
//代理角色
class WeddingCompany implements Marry {
// 真實角色對象
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarry() {
ready();
this.target.happyMarry();
after();
}
private void ready() {
System.out.println("婚前佈置");
}
private void after() {
System.out.println("婚後收拾");
}
}
三、完整代碼
public class StaticProxy {
public static void main篩選出 (String[] args) {
new WeddingCompany(new You()).happyMarry();
}
}
interface Marry {
void happyMarry();
}
// 真實角色
class You implements Marry {
@Override
public void happyMarry() {
System.out.println("我本人結婚了");
}
}
//代理角色
class WeddingCompany implements Marry {
// 真實角色對象
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarry() {
ready();
this.target.happyMarry();
after();
}
private void ready() {
System.out.println("婚前佈置");
}
private void after() {
System.out.println("婚後收拾");
}
}