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

Posted 香风智乃哈~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话设计模式-代理模式(大鸟和小菜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

以上是关于大话设计模式-代理模式(大鸟和小菜Java版)的主要内容,如果未能解决你的问题,请参考以下文章

大话设计模式-状态模式(大鸟和小菜Java版)

大话设计模式-模板方法模式(大鸟和小菜Java版)

大话设计模式-外观模式(大鸟和小菜java版)

大话设计模式-组合模式(大鸟和小菜Java版)

大话设计模式-建造者模式(大鸟和小菜java版)

大话设计模式-抽象工厂模式(大鸟和小菜Java版)