代理:就好比从生产者那里拿来了原始产品,加工后出售!
比方说:我代理了意大利面条,但是我认为不够好吃,于是我在面条里加了个鸡蛋,再加些胡椒粉,吃完面条后再给食客一些水果,这样输出的产品是我作为代理进行了修饰后的成果。
下面我们结合这个例子,首先给出UML图:
package efast.proxy;
public interface Noodel {
void taste();
}
package efast.proxy;
public class NoodelImpl implements Noodel {
public void taste() {
// TODO Auto-generated method stub
System.out.println("have noodels.");
}
}
package efast.proxy;
public class NoodelImplProxy implements Noodel {
private static NoodelImplProxy subjectImplProxy;
public static Noodel newInstance(){
if(subjectImplProxy==null){
return new NoodelImplProxy();
}
return subjectImplProxy;
}
public void taste() {
// TODO Auto-generated method stub
System.out.println("add en egg");
Noodel subject = new NoodelImpl();
subject.taste();
System.out.println("have some fruits");
}
}
测试下:
package efast.proxy;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
NoodelImplProxy.newInstance().taste();
}
}
结果可以发现代理已经成功。
add en egg
have noodels.
have some fruits
希望可以帮到大家。 下一节,讲解动态代理在项目中的实际应用,请关注或者私信交流。
源代码:
https://github.com/gyzx828/basic.git