当前位置: 首页 > wzjs >正文

建立网站服务的公司网站百度开户推广多少钱

建立网站服务的公司网站,百度开户推广多少钱,wordpress flexslider,在线设计房屋装修Vue3TypeScript实现访问者模式:电脑零件清单的动态分析 访问者模式(Visitor Pattern)听起来是不是有点像“程序员在电脑组装店里派了个审计员,专门检查零件清单”?它是一种行为型设计模式,通过定义访问者接…

Vue3+TypeScript实现访问者模式:电脑零件清单的动态分析

访问者模式(Visitor Pattern)听起来是不是有点像“程序员在电脑组装店里派了个审计员,专门检查零件清单”?它是一种行为型设计模式,通过定义访问者接口,在不改动零件类的前提下添加新功能。今天我们用Vue3和TypeScript,结合一个“电脑零件清单分析”的幽默例子,带你搞懂访问者模式如何灵活扩展操作,代码简洁又好玩,保证通俗易懂,笑中带学!


一、访问者模式是什么?

想象你经营一家电脑组装店,仓库里有一堆零件(CPU、内存、显卡),零件组织成清单(有的零件单独列,有的装在套件里)。现在你想统计零件总数或总价值,但不想改零件本身的代码。访问者模式就像你的“零件审计员”:通过定义一套访问接口,逐个检查零件或套件,执行特定操作,而不碰零件本身的逻辑,既灵活又解耦!

核心角色

  • 元素接口(Element):定义accept方法,接受访问者。
  • 具体元素类(Concrete Elements):实现元素接口,如单个零件或零件套件。
  • 访问者接口(Visitor):定义对每种元素的访问方法。
  • 具体访问者类(Concrete Visitors):实现具体操作,如统计数量或价值。

我们用Vue3+TypeScript实现一个前端版的“电脑零件清单分析系统”,让你边分析零件边学访问者模式!


二、代码实现

1. 元素接口与具体元素

// src/visitors/ComponentElement.ts
export interface ComponentElement {accept(visitor: ComponentVisitor): void;
}// 具体元素 - 单个零件
export class SingleComponent implements ComponentElement {constructor(public name: string, public value: number) {}accept(visitor: ComponentVisitor): void {visitor.visitSingleComponent(this);}
}// 具体元素 - 零件套件
export class ComponentKit implements ComponentElement {private components: ComponentElement[] = [];addComponent(component: ComponentElement): void {this.components.push(component);}accept(visitor: ComponentVisitor): void {visitor.visitComponentKit(this);this.components.forEach(component => component.accept(visitor));}getComponents(): ComponentElement[] {return this.components;}
}

幽默讲解ComponentElement是“零件清单的门票”,规定每件东西(零件或套件)必须能让审计员(访问者)来查。SingleComponent是“单个零件”,比如一块CPU,有名字和价值。ComponentKit是“零件套件”,像个盒子,装一堆零件,审计员查它时会顺便查盒子里的东西!

2. 访问者接口与具体访问者

// src/visitors/ComponentVisitor.ts
import { SingleComponent, ComponentKit } from './ComponentElement';export interface ComponentVisitor {visitSingleComponent(component: SingleComponent): void;visitComponentKit(kit: ComponentKit): void;
}// 具体访问者 - 统计零件数量
export class CountVisitor implements ComponentVisitor {private count: number = 0;visitSingleComponent(component: SingleComponent): void {this.count++;}visitComponentKit(kit: ComponentKit): void {// 无需额外逻辑,子组件会自动遍历}getCount(): number {return this.count;}
}// 具体访问者 - 计算总价值
export class ValueVisitor implements ComponentVisitor {private totalValue: number = 0;visitSingleComponent(component: SingleComponent): void {this.totalValue += component.value;}visitComponentKit(kit: ComponentKit): void {// 无需额外逻辑,子组件会自动遍历}getTotalValue(): number {return this.totalValue;}
}

幽默讲解ComponentVisitor是“审计员的工牌”,规定必须能查单个零件和套件。CountVisitor是“数零件审计员”,每看到一个零件就加1。ValueVisitor是“算价值审计员”,把每个零件的价值加起来。审计员只管干自己的活,零件啥也不用改!

3. Vue3组件:零件分析界面

// src/components/ComponentAnalyzer.vue
<script setup lang="ts">
import { ref } from 'vue';
import { SingleComponent, ComponentKit } from '../visitors/ComponentElement';
import { CountVisitor, ValueVisitor } from '../visitors/ComponentVisitor';// 构建零件清单
const kit = new ComponentKit();
kit.addComponent(new SingleComponent('Intel i7 CPU', 2000));
kit.addComponent(new SingleComponent('16GB RAM', 800));
const subKit = new ComponentKit();
subKit.addComponent(new SingleComponent('RTX 3080 GPU', 5000));
kit.addComponent(subKit);const analysisType = ref('count');
const result = ref('');const analyze = () => {if (analysisType.value === 'count') {const countVisitor = new CountVisitor();kit.accept(countVisitor);result.value = `📊 零件总数:${countVisitor.getCount()}`;} else {const valueVisitor = new ValueVisitor();kit.accept(valueVisitor);result.value = `💰 总价值:${valueVisitor.getTotalValue()}`;}
};
</script><template><div><h2>电脑零件清单分析站</h2><div><label>分析类型:</label><select v-model="analysisType"><option value="count">统计零件数量</option><option value="value">计算总价值</option></select></div><button @click="analyze">开始分析</button><p>{{ result }}</p></div>
</template>

幽默讲解:这个Vue组件就像店里的“零件分析仪”,客户选分析类型(数零件或算价值),点“开始分析”,访问者模式派审计员去查清单,零件和套件乖乖接受检查。结果一出:零件几个,价值多少,一目了然!客户(代码)只管选,零件啥也不用改!


三、应用场景

访问者模式在Vue3开发中就像“电脑零件清单的审计员”,非常适合以下场景:

  • 动态功能扩展:为Vue组件添加新操作(如导出、统计),无需改组件代码。
  • 数据结构遍历:处理复杂数据(如树形菜单、嵌套列表),执行不同分析或渲染。
  • 报表生成:对数据集合执行多种统计或格式化操作(如汇总、过滤)。
  • 组件树操作:遍历组件树,执行特定操作(如校验、动画)。

幽默例子:你的Vue3项目是个零件仓库,想数零件或算价值?访问者模式像审计员,跑一遍清单,啥都能算!零件(代码)稳坐不动,新需求随便加!


四、适用性

访问者模式适合以下前端场景:

  • 稳定结构:数据结构固定,但需频繁添加新操作。
  • 多样操作:对同一结构执行不同处理逻辑。
  • 解耦逻辑:将操作逻辑从数据结构中分离。

注意事项

  • 如果元素类经常变化,访问者接口需同步更新,维护成本高。
  • 复杂结构遍历可能影响性能,需优化访问逻辑。

五、注意事项

  1. 访问者设计

    • 访问者接口应覆盖所有元素类型,防止遗漏。
    • 保持操作逻辑单一,避免访问者类过于臃肿。
  2. TypeScript优势

    • 用接口(interface)定义元素和访问者行为,确保类型安全。
    • 利用类型检查,防止错误访问元素。
  3. 性能考虑

    • 复杂结构遍历时,优化递归或迭代逻辑。
    • 避免重复访问,缓存中间结果。
  4. Vue3生态

    • 参考Vue的渲染树遍历,学习复杂结构处理。
    • 结合Vue的组合式API,优化访问者的响应式管理。

幽默提示:别让访问者模式变成“零件审计员的乱查之旅”,查来查去把清单搞乱(Bug)!用对场景,访问者让你的代码像审计员一样精准高效!


六、总结

访问者模式就像前端开发中的“零件清单审计员”,通过分离操作逻辑,在不改数据结构的前提下添加新功能。在Vue3+TypeScript项目中,它适合动态功能扩展、数据遍历或报表生成。访问者模式让你的代码像审计大师,操作灵活,结构稳固,优雅又高效!

http://www.dtcms.com/wzjs/147876.html

相关文章:

  • 长治做网站杭州优化排名哪家好
  • 如何做贷款网站推广广告公司推广渠道
  • 面包类网站设计杭州网站
  • 怎么做属于自己的领券网站广告联盟平台哪个好
  • 中等职业学校示范建设专题网站网络推广一般都干啥
  • 西安网站排名优化长沙企业网站建设报价
  • 广东省省的建设厅官方网站网络整合营销方案ppt
  • wgcz公司网站谷歌广告投放步骤
  • 如何自己建站网站制作培训报名
  • 交友wordpressseo排名哪家正规
  • 电商网站开发语言抖音营销推广方案
  • 婚恋网站制作要多少钱最牛餐饮营销手段
  • 网站被301好的网络推广平台
  • 宝鸡外贸网站建设百度联系方式
  • 做seo网站seo站外推广有哪些
  • 网站新闻页面无法翻页网站外包公司有哪些
  • 专业做羽绒服的服装网站百度云网盘免费资源
  • 网站建设仟首先金手指13企业网站的主要类型有
  • 用照片做视频的模板下载网站好竞价推广账户托管费用
  • 南京网站设计培训价格seo中介平台
  • 垫江网站建设价格百度快照搜索引擎
  • 网站建设 客户要退款买链接官网
  • 彩票网站开发软件seo网络优化日常工作内容
  • 网站设计方法广州做seo整站优化公司
  • windows 2008 iis怎么搭建网站某个产品营销推广方案
  • 商城网站开发公司网络销售怎么聊客户
  • 如何免费网络营销推广seo网站优化服务合同
  • 国际贸易网站有哪些厦门人才网招聘
  • 遵义网站开发哪家便宜北京seo推广系统
  • 我国酒店网站建设存在的问题阿森纳英超积分