从fabric中学习设计模式

背景

我们知道canvas适合绘制复杂轨迹,但是绘制完后,轨迹对象无法获取,也无法操作;并且canvas的绘制每次都是全量的;这两个点无法满足复杂的需求,也会加重开发者的工作,而且项目难以维护。

现在有一个框架fabric,它将几何元素封装成几何对象给开发者使用,我们可以传入数据即可绘制元素,而且几何对象可以二次操作,我们近乎只需要关注传递给fabric的数据即可,这点是不是和react很像!我们只需要关注数据,框架帮我们调用绘制api,这是典型的mvc架构;

fabric的性能优化手段很多:

  1. 虚拟滚动,只渲染视图内的元素
  2. 合并不同的几何元素
  3. data层改变后,可以对比前后对象树做差量更新

设计模式

fabric内部使用了很多的设计模式,值得我们学习和借鉴,这些设计模式在开发基于fabric的项目时是很有用的

  • 工厂模式:大部分几何元素都通过一个工厂类来生成
  • 单例模式:全局唯一的canvas对象,方便共享变量,全局访问
  • 观察者模式:将事件触发和事件处理通过订阅发布的方式解耦
  • 命令模式:以遥控器里的各个按钮(命令)来控制电视机;fabricjs将用户的操作(创建元素、移动、旋转、缩放对象)命令化,从而能记录用户的行为并方便撤销行为
  • 适配者模式:对不同的浏览器做不同的适配操作
相关推荐
夜郎king12 分钟前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
feasibility.28 分钟前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode
BD_Marathon1 小时前
七大设计原则介绍
设计模式
夏幻灵1 小时前
HTML5里最常用的十大标签
前端·html·html5
Mr Xu_1 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝1 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions2 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl