美文网首页
对象多态笔记

对象多态笔记

作者: 江湖小盛 | 来源:发表于2022-10-31 22:55 被阅读0次
一段多态的javascript代码
var makeSound = function(animal) {
    if (animal instanceof Duck) {
      console.log('嘎嘎嘎')
    }
    if (animal instanceof Chicken) {
      console.log('咯咯咯')
    }
  }

  var Duck = function() {}
  var Chicken = function() {}

  makeSound(new Duck())
  makeSound(new Chicken())
多态背后的思想是将“做什么”和“谁去做已经怎么做”分离开来,也就是将不变得事物和可能改变的事物分离开来。

下面是改写后的代码:

  var makeSound = function(animal) {
    animal && animal.sound()
  }

  var Duck = function () { }
  
  Duck.prototype.sound = function() {
    console.log('嘎嘎嘎')
  }

  var Chicken = function () { }
  
  Chicken.prototype.sound = function() {
    console.log('咯咯咯')
  }

  makeSound(new Duck()) // 嘎嘎嘎
  makeSound(new Chicken()) // 咯咯咯

再看一个

  var googleMap = {
    show: function() {
      console.log('开始渲染谷歌地图')
    }
  }

  var baiduMap = {
    show: function() {
      console.log('开始渲染百度地图')
    }
  }

  var renderMap = function(type) {
    if (type === 'googleMap') {
      googleMap.show()
    }
    if (type === 'baiduMap') {
      baiduMap.show()
    }
  }

  renderMap('googleMap')
  renderMap('baiduMap')

我们还是先把程序中相同的部分抽离处理,那就是显示某个地图:

 var googleMap = {
    show: function() {
      console.log('开始渲染谷歌地图')
    }
  }

  var baiduMap = {
    show: function() {
      console.log('开始渲染百度地图')
    }
  }

  var renderMap = function(map) {
    if (map && map.show instanceof Function) {
      map.show()
    }
  }

  renderMap(googleMap)
  renderMap(baiduMap)

对象多态性提示我们,做什么和怎么去做是可以分开的,即使以后增加了搜搜地图,renderMap函数仍然不需要做任何改变

  var googleMap = {
    show: function() {
      console.log('开始渲染谷歌地图')
    }
  }

  var baiduMap = {
    show: function() {
      console.log('开始渲染百度地图')
    }
  }

  var sosoMap = {
    show: function () {
      console.log('开始渲染搜搜地图')
    }
  }

  var renderMap = function(map) {
    if (map && map.show instanceof Function) {
      map.show()
    }
  }

  renderMap(googleMap)
  renderMap(baiduMap)
  renderMap(sosoMap)

相关文章

  • java面向对象,多态,抽象,接口

    day09笔记【java面向对象,多态,抽象,接口】 1 多态的概述及其代码体现 A:多态(polymorphic...

  • 对象多态笔记

    一段多态的javascript代码 多态背后的思想是将“做什么”和“谁去做已经怎么做”分离开来,也就是将不变得事物...

  • 2017-9-20学习总结

    笔记内容: 多态性的概念 多态性是面向对象程序设计的第三个重要特征。 多态性是指发出同样的消息被不同类型的对象接收...

  • 多态的C++实现

    多态的C++实现 1 多态的原理 什么是多态?多态是面向对象的特性之一,只用父类指针指向子类的对象。 1.1 多态...

  • iOS中多态,继承,分类,扩展

    多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。程序中的多态:父类指针指向子类对象多态的原理 动态绑...

  • Python基础教程(第三版)(七)再谈抽象

    菜鸡的学习笔记。 7.1 对象魔法 多态:可对不同类型的对象执行相同的操作,但是操作将随对象所属的类型而异; 封装...

  • Java笔记-面向对象-多态

    多态:一个对象具备多种形态。(父类的引用类型变量指向了子类的对象)或者是接口 的引用类型变量指向了接口实现类的对象...

  • java编程思想笔记--多态

    java编程思想笔记--多态 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。​ ...

  • C++ 多态及虚函数

    多态 什么是多态?通俗来说就是相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。 静态多态 静态多态也叫...

  • Java的多态特性

    多态:对象的多种形态 1、引用多态 父类的引用可以指向本类的对象父类的引用可以指向子类的对象 2、方法多态 创建本...

网友评论

      本文标题:对象多态笔记

      本文链接:https://www.haomeiwen.com/subject/mdnltdtx.html