js——多态

js——多态

1."多态性"模拟

多态的实际含义:同一操作作用于不同的对象上,可以产生不同的解释和不同的执行结果。

  • 一个发出声音的方法makeSound
  • 一个猫的类Cat
  • 一个狗的类Dog
  • 当调用makeSound并且传入的是一只猫则打印出"喵喵喵~"
  • 当调用makeSound并且传入的是一只狗则打印出"汪汪汪!"
function makeSound(who){
    who instanceof Cat ? console.log("喵喵喵~") : who instanceof Dog ? console.log("汪汪汪!") : console.log("不符合标准");
}
class Cat{};
class Dog{};
makeSound(Cat());
makeSound(Dog());

2.对象的多态性

多态最根本的作用就是通过把过程化的条件语句转化为对象的多态性,从而消除这些条件分支语句

多态思想改造:

function makeSound (animal) {  
    if (animal.sound instanceof Function) { 
        // 判断是否有animal.sound且该属性为函数    
        animal.sound()  
    }
}
class Cat {  
    sound () {    
        console.log('喵喵喵~')  
    }
}
class Dog {  
    sound () {    
        console.log('汪汪汪!')  
    }
}
class Pig {  
    sound () {    
        console.log('啂妮妮')  
    }
}
makeSound(new Cat()) // '喵喵喵~'
makeSound(new Dog()) // '汪汪汪!'
makeSound(new Pig()) // '啂妮妮'

3.TS中使用继承得到多态效果

interface Animal {  
    sound(): void
}
function makeSound (animal: Animal) {  
    animal.sound()
}
class Cat implements Animal { 
    // 使用 implements 继承接口 
    Animal  sound(): void {    
        console.log('喵喵喵~')  
}
}
class Dog implements Animal {  
    sound(): void {    
        console.log('汪汪汪!')  
    }
}

maekSound(new Cat())
makeSound(new Dog())

读后感:期待呆呆大佬的设计模式系列,默默去翻翻后端语言去,忘得差不多了。。。

只是摘选,原文详情请点击下方链接。。。

来自评论区的宝藏:

JavaScript设计模式es6(23种)

作者:LinDaiDai_霖呆呆
原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值