大话设计模式-代理模式(大鸟和小菜Java版)

代理模式:在代理模式(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值