首页 > 其他分享 >【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱

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

时间:2022-11-12 19:03:08浏览次数:37  
标签:FootballTeam 以国足 冲出亚洲 代理 模式 退钱 footballTeam 设计模式 public


文章目录

  • ​​1 代理模式​​
  • ​​1.1 代理模式的解释​​
  • ​​1.2 代理模式的四个对象​​
  • ​​2 例子​​
  • ​​2.1 释义​​
  • ​​2.2 代码​​
  • ​​2.3 效果图​​
  • ​​3 静态代理模式​​
  • ​​3.1 解释​​
  • ​​3.2 代码​​
  • ​​3.3 效果图​​
  • ​​4 代理模式的优缺点​​
  • ​​4.1 代理模式的优点​​
  • ​​4.2 代理模式的缺点​​

1 代理模式

1.1 代理模式的解释

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

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

1.2 代理模式的四个对象

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

2 例子

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

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 效果图

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

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

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

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

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

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

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

3 静态代理模式

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

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

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

3.1 解释

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

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

在本例子中,抽象角色就是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 效果图

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

4 代理模式的优缺点

4.1 代理模式的优点

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

4.2 代理模式的缺点

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

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


标签:FootballTeam,以国足,冲出亚洲,代理,模式,退钱,footballTeam,设计模式,public
From: https://blog.51cto.com/u_15807146/5846746

相关文章

  • 设计模式-原型模式
    原型模式的核心在于拷贝源对象,UML类图如下:其中主要有三个角色:客户(client):客户类提出创建对象的请求抽象原型(Prototype):规定拷贝接口具体原型(ConcreatePrototyoe):被拷贝对象......
  • 设计模式学习(二十一):命令模式
    设计模式学习(二十一):命令模式作者:Grey原文地址:博客园:设计模式学习(二十一):命令模式CSDN:设计模式学习(二十一):命令模式命令模式命令模式是一种行为型模式。通过调用者调用......
  • 设计模式学习(二十):备忘录模式
    设计模式学习(二十):备忘录模式作者:Grey原文地址:博客园:设计模式学习(二十):备忘录模式CSDN:设计模式学习(二十):备忘录模式备忘录模式备忘录模式是一种行为型模式。用于记录对......
  • 设计模式学习(十九):访问者模式
    设计模式学习(十九):访问者模式作者:Grey原文地址:博客园:设计模式学习(十九):访问者模式CSDN:设计模式学习(十九):访问者模式访问者模式访问者模式是一种行为型模式。访问者模式......
  • 设计模式学习(十八):迭代器模式
    设计模式学习(十八):迭代器模式作者:Grey原文地址:博客园:设计模式学习(十八):迭代器模式CSDN:设计模式学习(十八):迭代器模式迭代器模式迭代器模式是一种行为型模式。迭代器最典......
  • 设计模式学习(十七):状态模式
    设计模式学习(十七):状态模式作者:Grey原文地址:博客园:设计模式学习(十七):状态模式CSDN:设计模式学习(十七):状态模式状态模式状态模式是一种行为型模式。对象的行为依赖于它的......
  • 设计模式学习(十六):责任链模式
    设计模式学习(十六):责任链模式作者:Grey原文地址:博客园:设计模式学习(十六):责任链模式CSDN:设计模式学习(十六):责任链模式责任链模式责任链模式是一种行为型模式。举例说明:有......
  • 设计模式学习(十五):策略模式
    设计模式学习(十五):策略模式作者:Grey原文地址:博客园:设计模式学习(十五):策略模式CSDN:设计模式学习(十五):策略模式策略模式策略模式是一种行为型模式,它定义了一组算法,将每个......
  • 设计模式-建造者模式
    在我们生活中的对象比如汽车,它是由车轮、车架、发动机等组合起来的对象,但是往往使用的人只想要一辆汽车并不想知道创建汽车的过程此时就可以使用建造者模式。在软件开发中,也......
  • 设计模式学习(十四):模板方法
    设计模式学习(十四):模板方法作者:Grey原文地址:博客园:设计模式学习(十四):模板方法CSDN:设计模式学习(十四):模板方法模板方法模板方法是一种行为型模式。假设我们要实现一个游......