猪猪侠的爱情保卫战:JS面向对象,代理模式来帮忙!

192 阅读4分钟

故事背景

今天咱不聊高深莫测的算法,也不侃花里胡哨的框架,咱们来聊聊JS,聊聊爱情,聊聊猪猪侠的追妹子大作战!

话说咱们的猪猪侠(zzx),那可是童话世界的头号帅哥,代码界的扛把子。可就是这么个优秀的男人,竟然在爱情的道路上栽了跟头!他看上了美丽的菲菲(ff),想送她99朵玫瑰,俘获她的芳心。

但是!菲菲可不是那么容易追的,她有个“心情值”(xq),只有心情值超过90,才会考虑和猪猪侠在一起。否则,直接一句“gun ~~~~~”就把猪猪侠打发了。

这可愁坏了猪猪侠,他想尽办法提高菲菲的心情值,可就是收效甚微。这时候,我们的面向对象思想和代理模式就要登场了!

JS:弱类型、动态、又灵活的“媒婆”

比如

let name = '小明'//定义一个字符型数据类型
let num = 1 //定义一个数字型数据类型
let bool = false //定义一个Boolean数据类型
......这些我们都没有定义其是声明数据类型,而是根据后面的数据决定其是声明数据类型

JS也是动态的,你可以在程序运行的过程中,随时修改变量的值。这让JS非常灵活,能适应各种变化。

当然,JS最强大的地方在于它的面向对象思想。它可以把现实世界中的事物抽象成对象,对象拥有属性和方法,属性描述对象,方法是对象可以执行的动作。

就像猪猪侠,就可以抽象成一个JS对象:

const zzx = {
  name: '猪猪侠', // key value  String
  age: 21, // Number  数值类型
  hometown: '童话世界',
  isSingle: true, // Boolean  布尔类型
  // 送花
  // 形参
  sendFlower: function (brother) {
    console.log(zzx.name + '给' + brother.name + '送了99朵玫瑰')
    brother.receiveFlower(zzx)
  }
}

image.png

面向对象:把妹套路,安排得明明白白

面向对象思想,就是把现实世界和它们之间的关系,都抽象成软件世界的模型。它遵循一些基本规则:

对象: 一切皆对象,对象拥有属性和方法。 属性: 描述对象的状态,比如猪猪侠的名字、年龄、家乡。 方法: 描述对象的行为,比如猪猪侠送花给菲菲。 有了面向对象思想,我们就可以把追妹子这件事,也抽象成对象和方法。猪猪侠送花,就是调用了sendFlower方法,然后菲菲收到花,就调用了receiveFlower方法。

代理模式:好兄弟,帮忙“曲线救国”

但是,猪猪侠直接送花,菲菲的心情值不够,直接被拒绝了。怎么办?这时候,他的好兄弟小呆呆(xdd)就要登场了!

小呆呆是菲菲的老乡,关系不错。猪猪侠决定,让小呆呆先代替他送花,然后小呆呆想办法提高菲菲的心情值,最后再让菲菲接受猪猪侠。

这就是代理模式!小呆呆就是猪猪侠的代理,他拥有和菲菲一样的receiveFlower方法,但是内部逻辑却不一样。他先拖延时间,然后通过一些手段(具体手段不便透露,你们懂的),提高菲菲的心情值,最终让菲菲接受了猪猪侠的玫瑰。

小呆呆

//帮猪猪侠  猪猪侠的兄弟
const xdd = {
  xq: 30,
  name: '小呆呆',

  hometown: '童话世界', //老乡
  //送小美,送小红,都具有receiveFlower的方法
  //对象互换
  //接口 interface  名字相同,效果不同
  receiveFlower: function (sender) {

    setTimeout(() => {//定时器,三秒后执行
      ff.xq = 99
      ff.receiveFlower(sender)
    }, 3000);


  }
}

image.png

菲菲

const ff = {
  xq: 30,
  name: '菲菲',
  receiveFlower: function (sender) {
    console.log(`收到了${sender.name}送的99朵玫瑰`);
    if (ff.xq > 90) {
      console.log('我们在一起吧');

    } else {
      console.log('gun ~~~~~');

    }
  }

}

image.png

面向接口编程:好兄弟,随时可以替换!

代理模式体现了面向对象思想的高级表现——面向接口编程。小呆呆和菲菲都实现了receiveFlower方法,方法名一样,但是内部逻辑不一样,这就是接口。

这意味着,小呆呆可以随时替换菲菲,只要他们都实现了receiveFlower方法,猪猪侠的送花逻辑就不需要改变。这就是面向接口编程的强大之处!

代码的运行:

这段代码可以在 ,也可以嵌入到 HTML 文件中在浏览器中运行。Node.js 就像一个独立的“发动机”,可以直接运Node.js 环境中运行行 JS 代码;而浏览器则需要借助 HTML 这个“容器”,才能运行 JS 代码。

Node.js 环境中运行 image.png

浏览器执行 image.png

image.png

总结:

通过面向对象思想和代理模式,猪猪侠成功地追到了菲菲!这告诉我们,即使是在爱情的世界里,编程思想也能发挥巨大的作用。

记住,JS是一个灵活的工具,面向对象思想是一种强大的武器,代理模式是一种有效的策略。只要掌握了这些,你也能像猪猪侠一样,在人生的道路上披荆斩棘,最终抱得美人归!

(友情提示:代码仅供参考,追妹子还是要靠真心!)