javascript设计模式1--前言

设计模式是程序员进阶的必经之路,真正地理解、掌握设计模式对编写高质量代码是极有帮助的。所以想从之前的笔记、工作中碰到的场景及反思、一些书籍的参考、和网上查到的用例,梳理一下自己对设计模式的理解,整理成一系列文章。

设计模式

  • 设计模式的本质是利用多态、封装、等技术,提炼出一些可以重复使用的设计技巧,或者说套路。
  • 当然,不同语言中,运用的技术是不一样的,在js中,用的比较多的是多态、闭包、高阶函数等技术。
  • 设计模式注重可复用性和可维护性,而不注重代码量和逻辑复杂度。
  • 深刻理解了模式的意图之后,再结合项目的实际场景进行使用,误用会适得其反。

动态语言的好处

  • js是动态语言,动态语言对变量类型的宽容给实际编码带来了很大的灵活性;
  • 静态语言中,实现“面向接口编程”不容易,因为在类型检查的强制要求下,必须通过抽象类或者接口进行向上转型,才能体现出多态的价值;
  • 而在js中,向上转型不存在的,任何对象都可以替换使用,实现多态简直轻而易举,具体见下文;

多态

  • 多态的概念:同一个操作作用于不同的对象上,可以产生不同的解释和不同的执行结果。
  • 在JavaScript这种类型模糊的语言中,对象多态性是天生的,一个变量既可以指向一个类, 又可以随时指向另外一个类。
  • 多态的核心思想:’做什么‘和’怎么做、谁去做‘分离开来,也是’不变的事情‘和’有可能变的事情‘分离开来;
var makeSound = function( 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() ); // 咯咯咯

代码参考自《设计模式与开发实践》

    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000017847710
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞