JavaScript设计模式与开发实践随笔,三

封装

1、 封装数据

a) 只能依赖变量的作用域来实现封装特性,es6中可以通过symbol创建私有属性

var myObject = (function(){

var __name = 'sven'; // 私有( private)变量

return {

getName: function(){ // 公开( public)方法

return __name;

}

}

})();

console.log( myObject.getName() ); // 输出: sven

console.log( myObject.__name ) // 输出: undefined

2、 封装实现

封装不仅仅是隐藏数据,还包括隐藏实现细节,设计细节以及对象类型,例如slice我们只拿来使用就可以了而不用关心内部是怎么实现的。只通过暴露API来通信

3、 封装类型

封装类型是静态类型语言中一种重要的封装方式。对于 JavaScript 的设计模式实现来说,不区分类型是一种失色,也可以说是一种解脱。

4、 封装变化

通过封装变化的方式,把系统中稳定不变的部分和容易变化的部分隔离开来,在系统的演变过程中,我们只需要替换那些容易变化的部分,如果这些部分是已经封装好的,替换起来也相对容易。这可以最大程度地保证程序的稳定性和可扩展性。