标签:art 而不是 UNC 设计 hub ref 优雅 部分 系统
今天开始阅读《JavaScript设计模式与开发实践》,对于设计模式的学习一直渴望已久。
设计模式的定义是:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。
其实平时在工作中不知不觉在使用某些设计模式,只是我们不知道而已。
“如果它走起 路来像鸭子,叫起来也是鸭子,那么它就是鸭子。”
利用鸭子类型的思想,我们 不必借助超类型的帮助,就能轻松地在动态类型语言中实现一个原则:“面向接口编程,而不是 面向实现编程”。
多态的最根本好处在于,你不必再向对象询问“你是什么类型”而后根据得到的答案调用对象的某个行为——你只管调用该行为就是了,其他的一切多态机制都会为你安排妥当。
JavaScript不会进行类型检查,很容易实现多态,只要你具有这个行为就好。而静态类型语言需要被设计为可以向上转型:当给一个类变量 赋值时,这个变量的类型既可以使用这个类本身,也可以使用这个类的超类。
封装的目的是将信息隐藏,封装应该被视为“任何形式的封装”,也就是说,封装不仅仅是隐藏数据,还包括隐藏实现细节、设计细节以及隐藏对象的类型等。
在 JavaScript中,每个对象都是从 Object.prototype 对象克隆而来的,这样的话, 我们只能得到单一的继承关系,即每个对象都继承自 Object.prototype 对象,这样的对象系统显然是非常受限的。
但是我们可以动态地指向其他对象。这样一来,当对象 a 需 要借用对象 b 的能力时,可以有选择性地把对象 a 的构造器的原型指向对象 b,从而达到继承的效果。如下代码就是常用的原型链继承方式:
var obj = { name: ‘sven‘ }; var A = function(){}; A.prototype = obj; var a = new A(); console.log(a.name); // sven
Github: https://github.com/Vxee/articles/issues/11
标签:art 而不是 UNC 设计 hub ref 优雅 部分 系统
原文地址:https://www.cnblogs.com/fjl-vxee/p/9347547.html