设计模式之代理模式

  1. 通过代理帮别人追女孩来简单梳理代理模式
    1. 代理模式实现
      1. 定义相关类
      2. 定义业务方法
      3. 执行结果
      4. 结果分析
  2. 联系作者
    1. 微信公众号
    2. QQ群

通过代理帮别人追女孩来简单梳理代理模式

追女生时由于害羞,可以选择让一个代理来代劳,送送礼物之类的。

代理模式实现

定义相关类

首先定义一个送礼物的接口

//代理接口
public interface GiveGift {
    public void GiveDolls();
    public void GiveFlowers();
    public void GiveChocolate();
}

定义一个具体的被追求者实体类

//被追求者类
public class SchoolGirl {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

定义一个追求者实体类

//追求者类
public class Pursuit implements GiveGift{

    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{

    Pursuit gg;
    public Proxy(SchoolGirl mm){
        gg = new Pursuit(mm);
    }

    @Override
    public void GiveDolls() {
        gg.GiveDolls();
    }

    @Override
    public void GiveFlowers() {
        gg.GiveFlowers();
    }

    @Override
    public void GiveChocolate() {
        gg.GiveChocolate();
    }
}

定义业务方法

看在具体业务逻辑中如何使用

public class ProxyTest {

    public static void func1(){
        SchoolGirl mm = new SchoolGirl();
        mm.setName("小红");

        Proxy daili = new Proxy(mm);

        daili.GiveDolls();
        daili.GiveFlowers();
        daili.GiveChocolate();
    }

    public static void main(String[] args) {
        //代理模式
        func1();
    }
}

执行结果

小红送你的洋娃娃
小红送你的鲜花
小红送你的巧克力

结果分析

代理模式,是为其他对象提供一种代理以控制对这个对象的访问。  

那代理模式一般用在哪些场景呢?  
1. 远程代理;
2. 安全代理;
3. 虚拟代理; 

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界