代理模式:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
以上就是代理模式的简介
定义一个接口
package 设计模式.代理模式; //定义一个接口,接口里面有三个需要实现的方法 public interface GiveGirl { //这个是玩偶方法 public void giveDolls(); //这个是送花的方法 public void giveFlowers(); //这个是给电影票的方法 public void giveMovie(); }
我把被追求者类和追求者类写在一起了,下面的代码包含这两个类
package 设计模式.代理模式; //被追求者类 public class SGril { private String name; // 添加set和get方法 public void setName(String name) { this.name = name; } public String getName() { return name; } } //追求者类 和被追求者写在一块了 class Pursuit implements GiveGirl{ SGril mm; //有参构造方法 public Pursuit(SGril 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 giveMovie() { System.out.println(mm.getName() + " 给你电影票"); } }
最后加上一个代理类,代替追求者向被追求者送东西
package 设计模式.代理模式; //代理类 public class Proxy implements GiveGirl{ // 把追求者类的变量先定义出来 Pursuit p; //一个构造方法,把被追求者对象传给new 出的追求者 public Proxy(SGril mm) { p = new Pursuit(mm); } //重写三个方法,到追求者类中调用 @Override public void giveDolls() { p.giveDolls(); } @Override public void giveFlowers() { p.giveFlowers(); } @Override public void giveMovie() { p.giveMovie(); } }
再加上一个测试主类
package 设计模式.代理模式; public class Test { public static void main(String[] args) { // 为被追求者类new一个对象 SGril jiaojiao = new SGril(); jiaojiao.setName("李娇娇"); // 为代理类new 一个对象 Proxy li = new Proxy(jiaojiao); li.giveDolls(); li.giveFlowers(); li.giveMovie(); } }
这个就是代理模式的代码实现,
参考大佬博客:https://blog.csdn.net/yixiang1989/article/details/38493543