摘要:
定义 观察者模式属于行为型模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。 一种一对多的关系中一称为被观察者也叫目标对象Subject而多则称为观察者对象Observer 观察者模式中通常有两个模型,一个观察者(observer)和 阅读全文
摘要:
定义 定义一系列的算法,将他们一个个封装起来,使他们直接可以相互替换。 算法:就是写的逻辑可以是你任何一个功能函数的逻辑 封装:就是把某一功能点对应的逻辑给抽出来 可替换:建立在封装的基础上,这些独立的算法可以很方便的替换 通俗的理解就是,把你的算法(逻辑)封装到不同的策略中,在不同的策略中是互相独 阅读全文
摘要:
定义 代理是一个中间者的角色,如生活中的中介,出于种种考虑/限制,一个对象不能直接访问另一个对象,需要一个第三者(中间代理)牵线搭桥从而间接达到访问目的,这样的就是代理模式。 es6 中的代理 es6 的 proxy 就是上面说的代理模式的实现,es6 帮我们在语法层面提供了这个新的api,让我们可 阅读全文
摘要:
定义 如果希望动态给某个类添加一些属性或者方法,但是你又不希望这个类派生的对象受到影响,那么装饰器模式就可以给你带来这样的体验。 它的定义就是在不改变原对象的基础上,通过对其进行包装拓展,使得原有对象可以动态具有更多功能,从而满足用户的更复杂需求。 举个例子,一部手机,你可以买各种花里胡哨的手机壳等 阅读全文
摘要:
定义 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式 百科。 通俗的说就是原型模式是一种创建型设计模式,指定某个对象(通过某种方式)得到一个新的对象,在内存中拥有新的地址,得到的对象与原对象是是相互独立的,即得到跟原对象一样的对象 当我们需要两个一模一 阅读全文
摘要:
什么是单例模式 单例模式 (Singleton Pattern)又称为单体模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。也就是说,第二次使用同一个类创建新对象的时候,应该得到与第一次创建的对象完全相同的对象。 简单的说就是保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式 阅读全文
摘要:
简单工厂问题 简单工厂中我们通过参数来返回不同的产品对象,如果管理的对象过多,这个工厂函数会比较庞大,且当我们需要增加一个新的产品时,需要修改这个工厂方法,违反开闭原则(对拓展开放,对修改关闭)。 为了解决简单工厂模式的问题,出现了工厂方法模式。 解决简单工厂思路 简单工厂类图关系类似如下: 如上图 阅读全文
摘要:
定义 之所以叫简单工厂是因为真的非常简单,只要一个工厂(函数)就可以了,如果把被创建的对象称为产品,把创建产品的对象或者方法称为工厂,那么只需要传入不同的参数,就可以返回不同的产品(实例),这种模式就叫简单工厂模式。 简单工厂-餐馆点菜 工厂模式其实就是将创建对象的过程单独封装在一个工厂中。 它很像 阅读全文
摘要:
简介 构造器模式,也被称为建造者、生成器模式,是设计模式中比较容易理解的模式之一。 定义:将一个对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 定义不太容易理解,简单的说就是构造器模式中的对象的属性是通过一个构造器来设置的,最后返回一个不同属性的对象。 在js中我们在创建对象时可以 阅读全文
摘要:
前端要不要学习设计模式 始终认为每个行业都有自己的特点,各自的专业性。一个开发工程师如果不知道电脑是哪些基本硬件组成,那么我们大概率都会认为这个人非常不专业。那么前端要不要学设计模式呢?设计模式跟前端有多大关系呢? 前端工程师首先是一个工程师,既然是一个软件工程师,那么类似设计模式、数据结构、网络相 阅读全文
摘要:
为什么要有HTTPS HTTP 天生具有明文的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有安全性。仅凭HTTP 自身是无法解决的,需要引入新的HTTPS协议,简单的说就是不安全。 什么是HTTPS HTTPS是一种通过计算机网络进行安全通信的传输协 阅读全文
摘要:
最近看了http相关的知识点,觉得还是有必要整理下,这样对自己的网络知识体系也有帮助。 HTTP 是什么 http叫超文本传输协议,可以拆成超文本、传输、协议来理解 协议 http 是一个用在计算机里面的协议,使用计算机通信之间的一个规范,以及相关各种控制和错误处理方式。简单的说就是约定、规则。 传 阅读全文
摘要:
简介 迭代器是一种设计模式,可在容器对象 如 链表、数组上遍历,无需关心容器对象的内存分配的实现细节。简单的理解就是可以一个一个的依次拿到其中的数据,类似一个移动的指针,但是会告诉我们什么时候结束。这样我们可以拿到数据之后可以做一些我们需要做的事情。 js 中的迭代器是什么样子的 在javascri 阅读全文
摘要:
二叉树遍历 二叉树的遍历是指从根节点出发,按照某种顺序依次访问所有节点,而且只访问一次,二叉树的遍历方式很多,如果限制了从左到右的方式,那么主要有4种: 前序遍历:根左右 中序遍历:左根右 后续遍历:左右根 层序遍历:按层级、从上到下,在同一层从左到右遍历 以上一篇的二叉树为例子,先序遍历 先访问根 阅读全文
摘要:
前面介绍过的都是线性的数据结构,本文将介绍一种非线性数据结构——树,它对于存储需要快速查找的数据非常有用。树是一种一对多的数据结构,树这种数据结构在生活中经常看到,如 组织结构图 图中每个元素我们叫做节点,即树(Tree)可以理解为是n(n>=0)个节点的有限集合。当n=0时称为空树。 基本概念 树 阅读全文
摘要:
散列表的由来 前面说了数组、链表,他们各自有自己的特点: 数组:具有随机访问的特点,可以快速的根据下标访问到数据,缺点是插入、删除需要移动数据 链表:插入、删除只需要改变结点之间的引用,缺点是查找数据需要从根结点遍历访问 散列表是组合了数组和链表的优势,规避它们的不足而产生新的一种数据结构。散列表是 阅读全文
摘要:
栈 栈是一种特殊的的线性表结构,只允许在一端插入和删除操作。允许插入和删除的一端是栈顶,另一端是栈底,不包含任何数据的叫空栈,栈具有后进者先出(Last in first out)简称LIFO,栈的操作主要有入栈、出栈 如 线性表、链表都是线性结构中的一种,只是存储方式不一样,叫不同的名称。 实现栈 阅读全文
摘要:
链表 标准数组是一块连续的内存地址,所以在做插入、删除时会对数据进行大量的移动,如果数据量很大那么效率会比较低。如果我们把每一个元素都记录着下一个元素的地址,那我们在做插入、删除时是不是只需要改变下一个元素的地址即可, 如 从存储结构来看链表不需要一块连续的内存空间,它通过“指针”将一组零散的内存块 阅读全文
摘要:
线性结构 线性结构是一个有序数据元素的集合,数据之间的关系是1:1 的关系如: 平时常用的线性结构有数组、线性表、栈、队列 如。 什么是数组 数组是计算机分配一块连续的内存空间,来存储具有相同元素类型的数据。数组具有随机访问的特点,这个特点有利有弊,比如可以根据数组下标快速的访问元素,但是要想在数组 阅读全文
摘要:
为什么需要复杂度分析 我们可以把代码跑一遍,然后通过一些工具来统计、监控就能得到算法执行的时间和占用的内存大小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准确吗? 首先,肯定的说这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给这种方法起了一个名字, 阅读全文
摘要:
定义 观察者模式属于行为型模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。 一种一对多的关系中一称为被观察者也叫目标对象Subject而多则称为观察者对象Observer 观察者模式中通常有两个模型,一个观察者(observer)和 阅读全文
摘要:
定义 定义一系列的算法,将他们一个个封装起来,使他们直接可以相互替换。 算法:就是写的逻辑可以是你任何一个功能函数的逻辑 封装:就是把某一功能点对应的逻辑给抽出来 可替换:建立在封装的基础上,这些独立的算法可以很方便的替换 通俗的理解就是,把你的算法(逻辑)封装到不同的策略中,在不同的策略中是互相独 阅读全文
摘要:
定义 代理是一个中间者的角色,如生活中的中介,出于种种考虑/限制,一个对象不能直接访问另一个对象,需要一个第三者(中间代理)牵线搭桥从而间接达到访问目的,这样的就是代理模式。 es6 中的代理 es6 的 proxy 就是上面说的代理模式的实现,es6 帮我们在语法层面提供了这个新的api,让我们可 阅读全文
摘要:
定义 如果希望动态给某个类添加一些属性或者方法,但是你又不希望这个类派生的对象受到影响,那么装饰器模式就可以给你带来这样的体验。 它的定义就是在不改变原对象的基础上,通过对其进行包装拓展,使得原有对象可以动态具有更多功能,从而满足用户的更复杂需求。 举个例子,一部手机,你可以买各种花里胡哨的手机壳等 阅读全文
摘要:
定义 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式 百科。 通俗的说就是原型模式是一种创建型设计模式,指定某个对象(通过某种方式)得到一个新的对象,在内存中拥有新的地址,得到的对象与原对象是是相互独立的,即得到跟原对象一样的对象 当我们需要两个一模一 阅读全文
摘要:
什么是单例模式 单例模式 (Singleton Pattern)又称为单体模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。也就是说,第二次使用同一个类创建新对象的时候,应该得到与第一次创建的对象完全相同的对象。 简单的说就是保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式 阅读全文
摘要:
简单工厂问题 简单工厂中我们通过参数来返回不同的产品对象,如果管理的对象过多,这个工厂函数会比较庞大,且当我们需要增加一个新的产品时,需要修改这个工厂方法,违反开闭原则(对拓展开放,对修改关闭)。 为了解决简单工厂模式的问题,出现了工厂方法模式。 解决简单工厂思路 简单工厂类图关系类似如下: 如上图 阅读全文
摘要:
定义 之所以叫简单工厂是因为真的非常简单,只要一个工厂(函数)就可以了,如果把被创建的对象称为产品,把创建产品的对象或者方法称为工厂,那么只需要传入不同的参数,就可以返回不同的产品(实例),这种模式就叫简单工厂模式。 简单工厂-餐馆点菜 工厂模式其实就是将创建对象的过程单独封装在一个工厂中。 它很像 阅读全文
摘要:
简介 构造器模式,也被称为建造者、生成器模式,是设计模式中比较容易理解的模式之一。 定义:将一个对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 定义不太容易理解,简单的说就是构造器模式中的对象的属性是通过一个构造器来设置的,最后返回一个不同属性的对象。 在js中我们在创建对象时可以 阅读全文
摘要:
前端要不要学习设计模式 始终认为每个行业都有自己的特点,各自的专业性。一个开发工程师如果不知道电脑是哪些基本硬件组成,那么我们大概率都会认为这个人非常不专业。那么前端要不要学设计模式呢?设计模式跟前端有多大关系呢? 前端工程师首先是一个工程师,既然是一个软件工程师,那么类似设计模式、数据结构、网络相 阅读全文