前端佬们,装起来!给设计模式【祛魅】

已经有一段时间懵的状态,也确实不知道写啥~现在满屏的都是LLM(大语言模型)的新闻,让前端佬(我)瑟瑟发抖。

以后拼啥呢?

拼能装!

论人类装X,AGI来也得服!

今天就跟前端佬们装一波,搞一搞设计模式。

1. 工厂模式

论起工厂模式,其实各位前端佬真的完全可以BS。看下面示例

js 复制代码
function 摸鱼(){
   switch(type){
      case 1 :
        return new 看掘金();
        break;
      case 2 :
         return new 打游戏();
        break;
      case 3 :
         return new 听音乐();
        break;
      case 4 :
         return new 扒新闻();
        break;
      case 5 :
         return new 蹲坑();
        break;
       default:
         reutrn new 干瞪眼();
   }
}

上面函数就是用工厂模式。但如果要是下面这么写,又不算是工厂模式了。

js 复制代码
function 摸鱼(type){
   switch(type){
      case 1 :
        看掘金();
        break;
      case 2 :
         打游戏();
        break;
      case 3 :
         听音乐();
        break;
      case 4 :
        扒新闻();
        break;
      case 5 :
         蹲坑();
        break;
       default:
         干瞪眼();
   }
}

其实工厂模式是那些静态类型语言,创建对象时,不需要那么频繁的写new xxx,而且也能够将一些同业务的类封装一起,达到在使用时对创建一个对象的依赖,遵循依赖倒置原则。

咋样。够装了吧~

2. 单例模式

单例其实最简单。中间思想就是,不管你怎么调用,只会创建一个,有且只有一个。上代码:

js 复制代码
window["摸鱼"] = {
    看掘金:function(){
        console.log('涨知识')
    }
}

JavaScrip实现单例就是这么骚气。做的高级点,现在可以做一些属性保护,只能通过方法来改变他。

js 复制代码
// 深度代理增强版 --- 注:AI编写
const createDeepProxy = (obj, check) => {
  return new Proxy(obj, {
    set(target, prop, value) {
      if (typeof value === 'object' && value !== null) {
        value = createDeepProxy(value, check)
      }
      return check(target, prop, value)
    },
    get(target, prop) {
      const value = Reflect.get(target, prop)
      if (typeof value === 'object' && value !== null) {
        return createDeepProxy(value, check)
      }
      return value
    }
  })
}

3. 策略模式

这种模式,在JavaScrip写法中可谓是遍地开花。举列如下:

js 复制代码
const  摸鱼 = {
    看掘金:function(){
        console.log('涨知识')
    },
    蹲坑:function(){
        console.log('脚麻')
    },
    打游戏:function(){
        console.log('手酸')
    }
}

策略模式的官方定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。说实话,完全看不懂。我理解的策略模式,就是能把一些毫不关联的业务都能集合在一起,方便集合管理和调用。这里见仁见智了~

4. 装饰者模式

一提起这个模式,我就有点忍不住想笑。先来例子:

js 复制代码
function 屎山代码(){
// 里面一万行代码
}
屎山代码() // =>完成了【摸鱼】功能

假设上面的屎山代码函数,主要实现了一个摸鱼功能。后面来了一个要求,需要让这个函数再实现【干人】功能。 面对这种情况,咱肯定不能改代码啊!一定得往里面再加代码。

js 复制代码
function _new屎山代码(){
    屎山代码()
    干人()
}
_new屎山代码() // =>完成了【摸鱼】【干人】功能

完美,这就是传说中装饰者模式。

WOW~已经写了好多了。有机会再侃侃其它的。上面只是举例了几个设计模式侃侃,没有那么重视形式,但自认为精髓都在。

欢迎各位大佬讨论~

也欢迎各位大佬不吝指教我一定改

相关推荐
漂流瓶jz7 小时前
理解Webpack插件机制:从插件使用、各类编译对象、Tapable到自定义插件与钩子开发
前端·javascript·webpack
折哥的程序人生 · 物流技术专研15 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
咖啡八杯17 小时前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
梦帮科技17 小时前
GRAVIS v4.0:基于Web的极速套利架构设计与实时数据流实现
前端·人工智能·rust·自动化·区块链·智能合约·数字货币
爱勇宝18 小时前
办公资料反复修改、补传、交接混乱,我做了个桌面工具来解决这件事
前端·后端·程序员
微信开发api-视频号协议18 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad
甲维斯18 小时前
Fable5:20美金的顶级设计师!
前端·人工智能
kyriewen19 小时前
我同时用了 Claude Code、Cursor 和 Codex,说说三个工具的真实差距——2026 年选错工具比不用 AI 更浪费时间
前端·ai编程·claude
Jackson__19 小时前
为了拯救我的腰椎和颈椎,我做了款浏览器插件!
前端·javascript·开源
闲猫19 小时前
Python FastAPI + SQLAlchemy 入门教程:从零搭建你的第一个 Web 应用
前端·python·fastapi