从fabric中学习设计模式

背景

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

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

fabric的性能优化手段很多:

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

设计模式

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

  • 工厂模式:大部分几何元素都通过一个工厂类来生成
  • 单例模式:全局唯一的canvas对象,方便共享变量,全局访问
  • 观察者模式:将事件触发和事件处理通过订阅发布的方式解耦
  • 命令模式:以遥控器里的各个按钮(命令)来控制电视机;fabricjs将用户的操作(创建元素、移动、旋转、缩放对象)命令化,从而能记录用户的行为并方便撤销行为
  • 适配者模式:对不同的浏览器做不同的适配操作
相关推荐
开开心心就好5 小时前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
Setsuna_F_Seiei7 小时前
前端转型 Agent 开发 05 之 Agent Hooks 与 Checkpointer(让 Agent 从全自动转变人为可掌控)
前端·agent·ai编程
Rain的Java大神之路9 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
百万蹄蹄向前冲9 小时前
风扇转了一晚上MVP专家团翻车事故
前端·人工智能
默_笙9 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
淡海水9 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
linux_cfan10 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
kyriewen11 小时前
我扒了 10,221 条 JD:腾讯技术岗 75% 在要 AI
前端·人工智能·ai编程
郑州光合科技余经理11 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒12 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端