架构设计笔记

内容列表

该文章将目前可能能用到的架构理念,概念统一汇总整理~

多态

  • 多态:多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结 果。换句话说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈。
  • 多态背后的思想是将“做什么”和“谁去做以及怎样去做”分离开来,也就是将“不变的事 物”与 “可能改变的事物”分离开来。
  • 把不变的部分隔离出来,把可变的部分封装起来,这给予了我们 扩展程序的能力
  • 使用继承来得到多态效果,是让对象表现出多态性的最常用手段。

高阶函数实现AOP

把这些功能抽离出来之后, 再通过“动态织入”的方式掺入业务逻辑模块中。这样做的好处首先是可以保持业务逻辑模块的纯净和高内聚性,其次是可以很方便地复用日志统计等功能模块。

  1. currying
  2. uncurrying
  3. 分时函数
  4. 惰性加载函数

在 Web 开发中,因为浏览器之间的实现差异,一些嗅探工作总是不可避免。比如我们需要一个在各个浏览器中能够通用的事件绑定函数 addEvent,常见的写法如下:

var addEvent = function (elem, type, handler) {

if (window.addEventListener) {

return elem.addEventListener(type, handler, false);

}

if (window.attachEvent) {
  
return elem.attachEvent('on' + type, handler);

}

};

第二种方案是这样,我们把嗅探浏览器的操作提前到代码加载的时候,在代码加载的时候就立刻进行一次判断,以便让 addEvent 返回一个包裹了正确逻辑的函数。代码如下:

var addEvent = (function () {

if (window.addEventListener) {

return function (elem, type, handler) {

elem.addEventListener(type, handler, false);

}

} if (window.attachEvent) {

return function (elem, type, handler) {

elem.attachEvent('on' + type, handler);

}

}

})();

单例模式

全局变量存在很多问题,减少全局变量声明,1. 使用命名空间;2. 使用闭包封装私有变量

代理模式 代理模式包括许多小分类,在 JavaScript 开发中最常用的是虚拟代理和缓存代理。虽然代理 模式非常有用,但我们在编写业务代码的时候,往往不需要去预先猜测是否需要使用代理模式。 当真正发现不方便直接访问某个对象的时候,再编写代理也不迟

相关

OSI 与 TCP/IP 参考模型

目前流行的两大网络体系结构是 OSI/RM 和 TCP/IP 参考模型,他们均是分层结构。分层是为了简化问题,降低网络设计复杂性,而且各层次结构相互独立,实现的功能也相对独立。层与层之间只在层间接口处关联,层间耦合最小。

了解更多

Web 前端性能优化:核心概念与指标

说到 Web 的性能优化,可能很多时候我们采取了一些措施,看到了肉眼可见的改进,如果我们可以对其进行测量,确定我们改进的效率(百分比)是不是会更有意义?换句话说,如果我们了解性能瓶颈可能发生的位置,衡量用户体验好坏的指标,做到实时追踪性能变化,我们是不是可以更迅速的采取优化措施?在应用上线前,我们就可以做一些低成本而有高收益的优化工作,进一步提升用户体验。

了解更多

理解编程语言的设计与实现

编程语言本质上是给开发者使用的工具,不同的业务领域使用不同的编程语言去实现具体的业务,是基于语言本身的设计理念与实现方式来做选择,那么作为开发者应该了解一下编程语言是如何被发明的,且其设计理念是什么。

了解更多