乐趣区

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() ); // 咯咯咯
代码参考自《设计模式与开发实践》

退出移动版