代理模式,提供其他对象一种代理以控制对这个对象的控制。
有此想到了我们日常生活中泡MM,小陈很喜欢小红,但因为自己胆怯,而且不认识小红,无法对予小红表达出那种钟情,于是他想到了他的朋友小林关系不错,那么小陈就把送花与送情书的动作交给小林去做,小林就充当一个代理的角色。把花与情书送给小红,可惜小红最后给小林追了,哈哈。
我们用代码来实现下
package com.tankiy.Proxy;
/**
* <p>Title: 代理模式</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public interface PursuitToMm {
/**
* 送花
*/
public void sendFlows();
/**
* 送情书
*/
public void sendLoveLetter();
}
Pusuit小陈
package com.tankiy.Proxy;
/**
* <p>Title: 代理模式</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public class Puruit implements PursuitToMm {
private String mm;
public Puruit(String mm) {
this.mm = mm;
}
public void sendFlows() {
System.err.println("送花给" + mm);
}
public void sendLoveLetter() {
System.err.println("送情书给" + mm);
}
}
小林ProxyPuruit
package com.tankiy.Proxy;
/**
* <p>Title: 代理模式</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public class ProxyPursuit implements PursuitToMm {
private Puruit puruit;
public ProxyPursuit(Puruit puruit) {
this.puruit = puruit;
}
public void sendFlows() {
puruit.sendFlows();
}
public void sendLoveLetter() {
puruit.sendLoveLetter();
}
}
测试用例
package com.tankiy.Proxy;
import junit.framework.TestCase;
/**
* <p>Title: 代理模式</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public class ProxyTest extends TestCase {
public void testProxy() {
String mm = "小红";
Puruit puruit = new Puruit(mm);
ProxyPursuit p = new ProxyPursuit(puruit);
p.sendFlows();
p.sendLoveLetter();
}
}
结果如下