我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱

文章目录

1 代理模式

1.1 代理模式的解释

通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真是对象的一个替身,这种机制被称为代理模式。通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。

代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文为Proxy或Surrogate,他是一种对象结构模型。

1.2 代理模式的四个对象

  • 抽象对象:一般会使用接口或者抽象类解决
  • 真实角色:被代理的角色
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
  • 客户:访问代理对象的人

2 例子

在这里插入图片描述

2.1 释义

Cup:代表世界杯

FootballTeam:国足

Client:我们

我们想要国足冲出亚洲,杀进世界杯!

2.2 代码

Cup.interface

public interface Cup {    public void win();}

FootballTeam.java

public class FootballTeam implements Cup{    @Override    public void win() {        System.out.println("国足冲出亚洲!");    }}

Client.java

public class Client {    public static void main(String[] args) {        FootballTeam footballTeam = new FootballTeam();        footballTeam.win();    }}

2.3 效果图

image-20221106202745067

最终国足成功冲出了亚洲,但是国足真的有这个实力吗?一向直性子的范大将军一马当先说出了自己的见解:“中国足球脸都不要了”

在这里插入图片描述

与此同时,朱雀体育台的足球场也是硝烟滚滚,一群红衣男子的出现,让这场比赛变得不再平凡。

在这里插入图片描述

在这里插入图片描述

歇斯底里的怒吼,酣畅淋漓的表达了对国足的爱

3 静态代理模式

可是,我们知道国足还是国足,但是我们不再是我们。

于是乎,我们找来了更具杀伤力的武器—“外援”(Proxy),在本设计模式中也就是代理。

在这里插入图片描述

3.1 解释

image-20221106210430689

国足要冲出亚洲,但是没有这个能力,所以他找来了"外援",外援要带领国足冲出亚洲,与此同时外援还不吃海参刻苦训练

在本例子中,抽象角色就是Cup,真实角色就是国足FootballTeam,国足要冲出亚洲,但是没有那个能力。于是让代理角色"外援"进来帮助我们,外援代理可以让国足冲出亚洲,同时还有一些附属操作:不吃海参、刻苦训。,身为客户的我们,就可以看到一场惊魂动魄的比赛,"外援"和国足球员同心合力,最终冲出亚洲!

3.2 代码

Cup.interface

public interface Cup {    public void win();}

FootballTeam.java

public class FootballTeam implements Cup{    @Override    public void win() {        System.out.println("国足要冲出亚洲!");    }}

ForeignAid.java

public class ForeignAid implements Cup{    private FootballTeam footballTeam;    public ForeignAid(FootballTeam footballTeam) {        this.footballTeam = footballTeam;    }    public ForeignAid() {    }    @Override    public void win() {        notEat();        train();        footballTeam.win();    }        public void notEat()    {        System.out.println("外援不吃海参!");    }        public void train()    {        System.out.println("外援刻苦训练!");    }}

Client.java

public class Client {    public static void main(String[] args) {        FootballTeam footballTeam = new FootballTeam();        ForeignAid foreignAid = new ForeignAid(footballTeam);        foreignAid.win();    }}

3.3 效果图

image-20221106210755606

4 代理模式的优缺点

4.1 代理模式的优点

  • 可以使真实角色的操作更加的纯粹!不用去关注一些公共的业务。
  • 公共业务交给代理角色!实现了业务分工,如国足只是表达了要冲出亚洲的"决心",其他的由"外援"去解决。
  • 公共业务发生扩展的时候,方便集中管理。

4.2 代理模式的缺点

  • 一个真实角色就会产生一个代理角色,代码量会翻倍。

以上例子,仅为调侃,期待国足能够屡败屡战,真正为中国人争光!

来源地址:https://blog.csdn.net/m0_59792745/article/details/127721548

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录