工厂设计模式和代理设计模式的相结合使用的例子:
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;
class Factory {
public static IEat getInstance() {
return new EatProxy(new EatReal());
}
}
package com.mydemo;
public class ProxyDemo {
public static void main(String[] args) {
// 获取代理对象,同时传入被代理者
IEat iEat = Factory.getInstance();
// 调用代理方法
iEat.getFood();
}
}
运行结果:
【代理主题】1.购买事物
【代理主题】2.处理食材
【真实主题】得到一份食物,然后开始品尝美味
【代理主题】3.收拾碗筷