代理设计也是在Java开发中使用较多的一种设计模式,是指用一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。
实现代理设计模式的例子:
package com.mydemo;
// 定义核心业务标准
public interface IEat {
// 业务方法
public void getFood();
}
package com.mydemo;
class EatReal implements IEat {
@Override
public void getFood() {
System.out.println("【真实主题】得到一份食物,然后开始品尝美味");
}
}
package com.mydemo;
class EatProxy implements IEat {
private IEat iEat; //定义代理主题类
/**
* 设置代理项
*
* @param iEat
*/
public EatProxy(IEat iEat) {
this.iEat = iEat;
}
/**
* 代理实现方法
*/
@Override
public void getFood() {
this.prepare(); // 业务实现方法
this.iEat.getFood(); // 【真实业务】调用核心业务操作
this.clear(); // 业务执行后的处理
}
/**
* 代理操作---准备过程
*/
public void prepare() {
System.out.println("【代理主题】1.购买事物");
System.out.println("【代理主题】2.处理食材");
}
/**
* 代理操作---收尾处理
*/
public void clear() {
System.out.println("【代理主题】3.收拾碗筷");
}
}
package com.mydemo;
public class ProxyDemo {
public static void main(String[] args) {
// 获取代理对象,同时传入被代理者
IEat iEat = new EatProxy(new EatReal());
// 调用代理方法
iEat.getFood();
}
}
运行结果:
【代理主题】1.购买事物
【代理主题】2.处理食材
【真实主题】得到一份食物,然后开始品尝美味
【代理主题】3.收拾碗筷