《大话设计模式》之代理模式
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。
引用《大话设计模式》的例子来说明代理的作用!
小明喜欢别的班一位女同学(MM),但是不认识她,可是他认识他同班同学,所以小明想通过他认识的同班同学来追(MM)。
如果把这个场景应用到设计模式当中的话,就应该用代理模式。
代理模式和被代理者的接口是同一个
如图:
代码:
代理与被代理共同实现接口类
public interface GiveGift { public void giveDolls(); public void giveFlowers(); public void giveChocolate(); }
被代理类是真正的业务逻辑的实现
public class Pursuit implements GiveGift { private SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm = mm; } @Override public void giveDolls() { System.out.println("送 "+mm.getName()+" 洋娃娃"); } @Override public void giveFlowers() { System.out.println("送 "+mm.getName()+" 花"); } @Override public void giveChocolate() { System.out.println("送 "+mm.getName()+" 蛋糕"); } }
代理类
public class Proxy implements GiveGift{ private Pursuit pursuit; public Proxy(SchoolGirl mm) { pursuit = new Pursuit(mm); } @Override public void giveDolls() { pursuit.giveDolls(); } @Override public void giveFlowers() { pursuit.giveFlowers(); } @Override public void giveChocolate() { pursuit.giveChocolate(); } }
客户端
public class Client { public static void main(String[] args) { SchoolGirl mm = new SchoolGirl(); mm.setName("mm"); Proxy daili = new Proxy(mm); daili.giveChocolate(); daili.giveDolls(); daili.giveFlowers(); } }
public class SchoolGirl { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
相关推荐
自己总结的代理模式和Java中的动态代理模式,有源码
Java 代理模式 简单实现,这是用Java实现的Java代理模式,包括动态代理, 可以运行
Java代理模式 事例很生动,非常容易理解,推荐给大家。
java代理模式和动态代理
JAVA设计模式之代理模式实例
Java代理模式模板代码,包含动态代理与静态代理。 静态代理使用了传统的代理类来代理,动态代理中使用了jdk的反射原理进行代理
16-Java代理模式的学习笔记1
对java代理模式有个详细而深入的讲解,从jdk api的角度来讲解的。。。
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java代理模式.pdf
浅析JAVA代理模式.pdf
Java代理模式参照.pdf
分析Java代理模式的使用方式,和JDK内部动态代理的实现机制,演示如何自己去实现一个动态代理模式,有助于初学者对Java代理模式的理解和运用。
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。
编程语言Java代理模式.pdf