文章目录
1 代理模式
1.1 代理模式的解释
1.2 代理模式的四个对象
2 例子
2.1 释义
我们想要国足冲出亚洲,杀进世界杯!
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 效果图
最终国足成功冲出了亚洲,但是国足真的有这个实力吗?一向直性子的范大将军一马当先说出了自己的见解:“中国足球脸都不要了”
与此同时,朱雀体育台的足球场也是硝烟滚滚,一群红衣男子的出现,让这场比赛变得不再平凡。
歇斯底里的怒吼,酣畅淋漓的表达了对国足的爱
3 静态代理模式
可是,我们知道国足还是国足,但是我们不再是我们。
于是乎,我们找来了更具杀伤力的武器—“外援”(Proxy),在本设计模式中也就是代理。
3.1 解释
国足要冲出亚洲,但是没有这个能力,所以他找来了"外援",外援要带领国足冲出亚洲,与此同时外援还不吃海参、刻苦训练。
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 效果图
4 代理模式的优缺点
4.1 代理模式的优点
4.2 代理模式的缺点
以上例子,仅为调侃,期待国足能够屡败屡战,真正为中国人争光!