《大話設計模式》Java程式碼示例(四)之代理模式
阿新 • • 發佈:2018-12-18
代理模式(Proxy):為其他物件提供一種代理以控制對這個物件的訪問。
package proxy;
/**
* 代理模式(Proxy)
* 被追求者類
*/
public class SchoolGirl {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package proxy; /** * 代理模式(Proxy) * 代理介面 */ public interface GiveGift { void giveDolls(); void giveFlowers(); void giveChocolate(); }
package proxy; /** * 代理模式(Proxy) * 追求者類 */ public class Pursuit implements GiveGift { SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm = mm; } @Override public void giveDolls() { System.out.println("Hi," + mm.getName() + ",送你個娃娃,請收下。"); } @Override public void giveFlowers() { System.out.println("Hi," + mm.getName() + ",送你束鮮花,請收下。"); } @Override public void giveChocolate() { System.out.println("Hi," + mm.getName() + ",送你盒巧克力,請收下。"); } }
package proxy; /** * 代理模式(Proxy) * 代理類 */ public class Proxy implements GiveGift { Pursuit gg; public Proxy(SchoolGirl mm) { this.gg = new Pursuit(mm); } @Override public void giveDolls() { gg.giveDolls(); } @Override public void giveFlowers() { gg.giveFlowers(); } @Override public void giveChocolate() { gg.giveChocolate(); } }
package proxy;
/**
* 代理模式(Proxy)
* 客戶端main方法
*/
public class Client {
public static void main(String[] args) {
SchoolGirl mm = new SchoolGirl();
mm.setName("小龍女");
Proxy proxy = new Proxy(mm);
proxy.giveDolls();
proxy.giveFlowers();
proxy.giveChocolate();
}
}