vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue3 TypeScript中介者模式

Vue3+TypeScript实现中介者模式的详细过程

作者:菜喵007

在Vue3+TypeScript项目中,它适合组件通信、事件管理或复杂UI交互,本文给大家介绍Vue3+TypeScript实现中介者模式,感兴趣的朋友一起看看吧

Vue3+TypeScript实现中介者模式:电脑维修调度中心

中介者模式(Mediator Pattern)听起来是不是有点像“程序员在电脑维修店里设了个总调度台”?它是一种行为型设计模式,通过一个中介者来协调多个对象间的交互,避免它们直接互相喊来喊去。今天我们用Vue3和TypeScript,结合一个“电脑维修调度”的幽默例子,带你搞懂中介者模式如何简化复杂交互,代码简洁又好玩,保证通俗易懂,笑中带学!

一、中介者模式是什么?

想象你经营一家电脑维修店,有客户、技师、仓库管理员,大家要协调:客户报修,技师接单,仓库发零件。如果他们直接互相联系,店里早就乱成一锅粥!中介者模式就像你的“维修调度中心”:所有交互都通过调度中心,客户、技师、仓库只跟调度中心打交道,网状关系变星形,清晰又高效

核心角色

我们用Vue3+TypeScript实现一个前端版的“电脑维修调度系统”,让你边调度维修边学中介者模式!

二、代码实现

1. 抽象中介者接口

// src/mediators/RepairMediator.ts
export interface RepairMediator {
  sendRequest(sender: Colleague, request: string): void;
  registerColleague(colleague: Colleague): void;
}

幽默讲解RepairMediator是“调度中心的对讲机”,规定谁能发请求(sendRequest),谁能加入团队(registerColleague)。就像店里的大喇叭,统一指挥!

2. 具体中介者

// src/mediators/RepairDispatchCenter.ts
import { RepairMediator } from './RepairMediator';
import { Colleague } from './Colleague';
export class RepairDispatchCenter implements RepairMediator {
  private colleagues: Colleague[] = [];
  registerColleague(colleague: Colleague): void {
    this.colleagues.push(colleague);
    colleague.setMediator(this);
  }
  sendRequest(sender: Colleague, request: string): void {
    this.colleagues.forEach(colleague => {
      if (colleague !== sender) {
        colleague.receiveRequest(sender.getName(), request);
      }
    });
  }
}

3. 同事类

// src/mediators/Colleague.ts
import { RepairMediator } from './RepairMediator';
export abstract class Colleague {
  protected mediator: RepairMediator | null = null;
  protected name: string;
  constructor(name: string) {
    this.name = name;
  }
  setMediator(mediator: RepairMediator): void {
    this.mediator = mediator;
  }
  getName(): string {
    return this.name;
  }
  abstract receiveRequest(from: string, request: string): string;
}
export class Customer extends Colleague {
  sendRequest(request: string): string {
    if (this.mediator) {
      this.mediator.sendRequest(this, request);
      return `📢 ${this.name}发送请求:${request}`;
    }
    return '😅 未连接调度中心!';
  }
  receiveRequest(from: string, request: string): string {
    return `📩 ${this.name}收到${from}的回复:${request}`;
  }
}
export class Technician extends Colleague {
  sendRequest(request: string): string {
    if (this.mediator) {
      this.mediator.sendRequest(this, request);
      return `📢 ${this.name}发送请求:${request}`;
    }
    return '😅 未连接调度中心!';
  }
  receiveRequest(from: string, request: string): string {
    return `🛠️ ${this.name}收到${from}的请求:${request},开始维修!`;
  }
}

幽默讲解Customer是“客户”,报修时喊调度中心,收到回复就开心。Technician是“技师”,接到客户请求就开工,零件不够就喊仓库。每个人只跟调度中心聊,互不干扰!

4. Vue3组件:维修调度界面

// src/components/RepairDispatch.vue
<script setup lang="ts">
import { ref } from 'vue';
import { RepairDispatchCenter } from '../mediators/RepairDispatchCenter';
import { Customer, Technician } from '../mediators/Colleague';
const mediator = new RepairDispatchCenter();
const customer = new Customer('张三');
const technician = new Technician('李技师');
mediator.registerColleague(customer);
mediator.registerColleague(technician);
const request = ref('');
const results = ref<string[]>([]);
const sendRequest = () => {
  if (request.value) {
    results.value.push(customer.sendRequest(request.value));
    results.value.push(technician.receiveRequest(customer.getName(), request.value));
    request.value = '';
  }
};
</script>
<template>
  <div>
    <h2>电脑维修调度中心</h2>
    <div>
      <label>客户请求:</label>
      <input v-model="request" placeholder="输入维修请求" />
    </div>
    <button @click="sendRequest">发送请求</button>
    <pre>{{ results.join('\n') }}</pre>
  </div>
</template>

幽默讲解:这个Vue组件就像店里的“调度屏幕”,客户输入维修请求(比如“电脑蓝屏”),点“发送”,中介者模式通过调度中心广播给技师,技师回应开工。客户(代码)只管喊,调度中心全搞定!

三、应用场景

中介者模式在Vue3开发中就像“电脑维修的调度中心”,非常适合以下场景:

幽默例子:你的Vue3项目是个维修店,客户、技师、仓库乱喊?中介者模式像调度中心,一声令下全听指挥!代码像对讲机,沟通顺畅,效率爆棚!

四、适用性

中介者模式适合以下前端场景:

注意事项

五、注意事项

中介者设计

TypeScript优势

性能考虑

Vue3生态

幽默提示:别让中介者模式变成“调度中心的八卦台”,啥都管把代码搞乱(Bug)!用对场景,中介者让你的交互像调度台一样井然有序!

六、总结

中介者模式就像前端开发中的“维修调度中心”,通过集中协调对象交互,简化网状关系,降低耦合。在Vue3+TypeScript项目中,它适合组件通信、事件管理或复杂UI交互。中介者模式让你的代码像智能调度台,通信清晰,协作高效,优雅又省心!

到此这篇关于Vue3+TypeScript实现中介者模式的文章就介绍到这了,更多相关Vue3 TypeScript中介者模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文