本文目录导读:

- 中介者模式(Mediator Pattern)——最典型的支点
- 外观模式(Facade Pattern)——简化复杂子系统的支点
- 观察者模式(Observer Pattern)——信息汇聚与分发支点
- 责任链模式(Chain of Responsibility)——进攻链条的枢纽
- 总结:Java中“支点作用”的核心特征
在Java中,“高中锋支点作用”通常指的是在面向对象编程(OOP)或设计模式中,一个处于核心地位、起到承上启下、汇聚或转发作用的对象,这个比喻来源于足球战术:高中锋作为前场支点,背身拿球、护住球权,然后为队友做球或自己攻门。
在Java代码中,这种“支点作用”主要体现在以下几个经典场景:
中介者模式(Mediator Pattern)——最典型的支点
高中锋就像中介者,所有中场、边锋、后卫的传球都先交给他,再由他分配。
// 中介者接口——高中锋的“支点”职责
interface StrikerMediator {
void receive(String from, String message);
void distribute(String to, String message);
}
// 具体中介者——高中锋
class CenterForward implements StrikerMediator {
private Winger leftWinger;
private Winger rightWinger;
private Midfielder midfielder;
public void setLeftWinger(Winger w) { this.leftWinger = w; }
public void setRightWinger(Winger w) { this.rightWinger = w; }
public void setMidfielder(Midfielder m) { this.midfielder = m; }
@Override
public void receive(String from, String message) {
System.out.println("高中锋背身接到来自 [" + from + "] 的球: " + message);
// 支点作用:根据情况分边或回做
if (message.contains("传中")) {
distribute("左边锋", "头球摆渡");
} else {
distribute("中场", "回做");
}
}
@Override
public void distribute(String to, String message) {
System.out.println("高中锋支点做球给 [" + to + "]: " + message);
if ("左边锋".equals(to)) leftWinger.run(message);
else if ("右边锋".equals(to)) rightWinger.run(message);
else if ("中场".equals(to)) midfielder.run(message);
}
}
支点体现:所有队员不直接互相通信,全部通过高中锋这个“中介”转发,降低了耦合。
外观模式(Facade Pattern)——简化复杂子系统的支点
高中锋是前场的外观,后场只需要把球交给他,不需要了解前场复杂跑位。
// 复杂的子系统:前场各种进攻跑位
class LeftWing { void sprint() { System.out.println("左边锋前插"); } }
class RightWing { void cross() { System.out.println("右边锋传中"); } }
class AttackingMid { void throughBall() { System.out.println("前腰直塞"); } }
// 外观——高中锋支点
class StrikerFacade {
private LeftWing lw = new LeftWing();
private RightWing rw = new RightWing();
private AttackingMid am = new AttackingMid();
// 对外只暴露一个简单接口,实际内部协调复杂子系统
public void holdUpPlay() {
System.out.println("高中锋护球,吸引防守...");
lw.sprint();
rw.cross();
am.throughBall();
}
}
// 后卫只需要调用一个方法,无需知道前场多复杂
public class Defender {
public static void main(String[] args) {
StrikerFacade striker = new StrikerFacade();
striker.holdUpPlay(); // 后卫一脚长传找到高中锋,剩下的他搞定
}
}
支点体现:StrikerFacade 是后场与前场复杂系统之间的唯一接触点。
观察者模式(Observer Pattern)——信息汇聚与分发支点
高中锋作为被观察者,队友观察他的位置;同时他也可以是观察者,观察传球来源。
import java.util.*;
// 高中锋作为被观察者——队友根据他的跑位行动
class CenterForwardObservable {
private List<Observer> teammates = new ArrayList<>();
private String position;
public void addObserver(Observer o) { teammates.add(o); }
public void removeObserver(Observer o) { teammates.remove(o); }
public void setPosition(String pos) {
this.position = pos;
notifyAllObservers();
}
private void notifyAllObservers() {
for (Observer o : teammates) {
o.update(position);
}
}
}
interface Observer { void update(String strikerPos); }
class Winger implements Observer {
private String name;
public Winger(String name) { this.name = name; }
@Override
public void update(String strikerPos) {
System.out.println(name + " 观察到高中锋位置: " + strikerPos + ",调整跑位");
}
}
支点体现:高中锋的位置变化是全局信号源,所有进攻队员围绕他联动。
责任链模式(Chain of Responsibility)——进攻链条的枢纽
高中锋在责任链中间,既是处理者也是传递者。
abstract class Player {
protected Player next;
public void setNext(Player next) { this.next = next; }
public abstract void handle(String ball);
}
class Defender extends Player {
public void handle(String ball) {
System.out.println("后卫断球,长传找高中锋");
if (next != null) next.handle(ball);
}
}
class CenterForward extends Player {
public void handle(String ball) {
System.out.println("高中锋头球争顶,做球给边锋");
if (next != null) next.handle("做球后的第二点");
}
}
class Winger extends Player {
public void handle(String ball) {
System.out.println("边锋接球内切射门!");
}
}
// 链条:后卫 → 高中锋 → 边锋
public class AttackChain {
public static void main(String[] args) {
Player defender = new Defender();
Player striker = new CenterForward();
Player winger = new Winger();
defender.setNext(striker);
striker.setNext(winger);
defender.handle("球权");
}
}
支点体现:高中锋处在链条中间节点,承上启下,没有他链条断裂。
Java中“支点作用”的核心特征
| 特征 | Java对应概念 |
|---|---|
| 承上启下 | 中介者、责任链中间节点 |
| 降低耦合 | 外观模式、中介者模式 |
| 信息汇聚分发 | 观察者模式、事件总线 |
| 简化调用 | Facade、Service层 |
| 核心协调 | Spring中的Service、Controller |
一句话:在Java里,高中锋式的支点就是一个被依赖但不依赖具体实现的核心对象,它让系统其他部分围绕它运转,自己保持稳定和通用。