文章目录

  • 前言
  • 一、设计模式
    • 1. 设计模式扮演的角色
    • 2. 程序设计原则
    • 3. 设计模式的分类
  • 总结

前言

在了解设计模式后,发现它起始没有那么高大上,有些是我们平时开发中已经用到的东西(更好的设计模块,组织共同的代码),它只是给这些好用的代码模式起了一个名字而已。


一、设计模式

项目/功能 = 模块 + 沟通;

1. 设计模式扮演的角色

1. 帮助我们组织模块(通过一些设计模式,组织模块间的组成结构);
2. 帮助我们设计沟通(有的设计模式可以帮助我们设计模块间如何沟通);
3. 提高代码质量(通过设计模式,让代码更加优雅);

2. 程序设计原则

1. 开闭原则(我们的程序对扩展开放,对修改关闭。);
2. 单一职责原则(模块只做一件事情,它的职责越单一越好);
3. 依赖倒置原则(上层模块不依赖具体的下层模块,而应该依赖抽象层);
//依赖倒置原则(上层模块不依赖具体的下层模块,而应该依赖抽象层)代码实例//假设有四种菜,一个点单类//1.点单依赖菜的代码(有几种菜,点单上就忒有几种方法,当菜发生变动时,点单上的方法也要发生变动)
function food1() {}
function food2() {}
function food3() {}
function food4() {}function order() {}
order.prototype.orderFood1 = function() {}
order.prototype.orderFood2 = function() {}
order.prototype.orderFood3 = function() {}
order.prototype.orderFood4 = function() {}//2.在菜和点单中间,抽象出一个餐馆层的代码(这样菜无论怎么变动都不会影响我们的点单,我们只需要改变一下抽象层餐馆)
function food1() {}
function food2() {}
function food3() {}
function food4() {}function resturn(food) { //餐馆var list = {   //类似菜单food1: new food1(),food2: new food2(),food3: new food3(),}return list[food];
}
function order(food) {  //点单return resturn(food);
}
4. 接口隔离原则(接口应该细化,功能应该单一,不要一个接口调用太多方法);
5. 迪米特法则/最少知识原则(两个对象之间产生沟通,但两个对象没有必要互相非常了解);
6. 里氏替换原则(关注点在“继承”,子类继承父类时,要保证完全继承父类的属性和方法,这样父类使用的地方,子类可以替换);

3. 设计模式的分类

1. 创建型(这些设计模式可以帮助我们优雅地创建对象);1.1. 工厂模式——大量创建对象;1.2. 建造者模式——精细化组合对象;1.3. 单例模式——全局只能有我一个;1.4. 原型模式——JavaScript的灵魂;
2. 结构型(帮助我们优雅地设计代码结构);2.1. 外观模式——给你一个套餐;2.2. 适配器模式——用适配代替更改;2.3. 装饰者模式——更优雅地扩展需求;2.4. 享元模式——共享来减少数量;2.5. 桥接模式——独立出来,然后再对接过去;
3. 行为型(模块之间行为的模式总结,帮助我们组织模块行为);3.1. 观察者模式——我作为第三方转发;3.2. 状态模式——用状态代替判断;3.3. 策略模式——算法工厂;3.4. 职责链模式——像生产线一样组织模块;3.5.  命令模式——用命令去解耦;3.6. 迭代器模式——告别for循环;
4. 技巧型(一些帮助我们优化代码的技巧);4.1. 链模式——链式调用;4.2. 委托模式——让别人代替你收快递;4.3. 数据访问模式——一个方便的数据管理器;4.4. 惰性模式——我要搞机器学习;4.5. 等待者模式——等你们都回来再吃饭;
5. 架构型(清晰的将一些子系统组合在一起);

总结

革命尚未成功,同志仍需努力。

JS设计模式——设计模式概论相关推荐

  1. 图解设计模式-设计模式七大原则

    Java设计模式 设计模式七大原则 设计模式的目的 编写软件过程中,程序员面临来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让 **程序(软件)**具有更好的 ...

  2. 设计模式 ----- 设计模式总结

    设计模式 -– 设计模式总结 设计模式系列源码: https://github.com/liloqian/DesiginModeDemo 1.什么是设计模式 模式是指在某情形下,针对某问题的某种解决方 ...

  3. Java设计模式---设计模式概述及七大原则

    网课指路:尚硅谷Java设计模式(图解+框架源码剖析)_哔哩哔哩_bilibili 设计模式介绍         1) 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验, 模式不是代码 ...

  4. 正确的姿势学习设计模式,设计模式必知必会 --- 面试, 提升篇

    目录 引言--- 为何需要设计模式? 学习设计模式不如掌握设计原则 (根据原则慢慢重构自己的设计模式) 依赖倒置原则 开放封闭原则 面向接口编程 封装变化点(核心原则) 抽象稳定点,扩展变化点 单一职 ...

  5. JavaScript 设计模式----设计模式初识

    JavaScript 设计模式----设计模式初识 1. 从设计到模式 2. 设计模式简介 2.1 设计模式类型 2.2 创建型 2.3 结构型 2.4 行为型 3. 设计原则面试题 3.1 面试题一 ...

  6. 聊聊JS与设计模式之(工厂Factory)篇------(麦当劳的故事)

    一,总体概要 1,笔者浅谈 说起设计模式其实并不是什么很新奇的概念,它也不是基于特定语言所形成的产物,它是基于软件设计原则以及相关的方法论和经过特定时期衍生出的若干解决方案.本文会以一个实例带入大家学 ...

  7. 大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)...

    一,总体概要 1,笔者浅谈 说起"门面"这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, 1 functio ...

  8. 基于JS的设计模式01(kerwin老师笔记)

    封装变化是核心,变化的部分灵活,不变的部分稳定,不是所有的问题都可以用到现有的设计模式. 1.构造器模式 // 有几个就需要创建几个,太麻烦了var employee1 ={name:'kerwin' ...

  9. js原生设计模式——2面向对象编程之继承—new+call(this)组合式继承

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  10. js架构设计模式——由项目浅谈JS中MVVM模式

    1.    背景 最近项目原因使用了durandal.js和knockout.js,颇有受益.决定写一个比较浅显的总结. 之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很 ...

最新文章

  1. floyd和迪杰斯特拉算法的路径记录方法。
  2. 分布式缓存技术memcached学习(一)——linux环境下编译memcahed
  3. sqlserver数据库中清空日志文件
  4. 语言 高速公路超速处罚_重磅!全国高速将统一限速,这4种超速不再扣分罚款!【饮茶论道】...
  5. Oracle随记笔记
  6. 设计模式-------建造者模式(生成器模式)
  7. arm rtx教程_【RTX操作系统教程】第5章 RTX操作系统库方式移植(超级...
  8. 2022年全球市场燃气烧烤架总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. python中读取和查看图片的6种方法
  10. (数据结构基础)Among the following threaded binary trees (the threads are represented by dotted curves),……
  11. 使用PS批量处理图片大小
  12. eclipse中文版 中英文切换 + 全语言转换
  13. 【计算机网络】:1-基本知识
  14. 技术经典图书(附电子版下载地址)
  15. formCreate
  16. 计算机应用类专业综合模拟试卷一,计算机应用专业综合模拟试卷一
  17. 最小生成树:克鲁斯卡尔算法+普里姆算法
  18. Java学习之while循环及案例
  19. 引导图滤波(Guided Image Filtering)原理以及OpenCV实现
  20. MySql中连接出现 1130-Host ‘LAPTOP-AKP8DH1F’ is not allowed to connect to this MySQL server 的解决方法

热门文章

  1. 【填坑向】记一次使用ScheduledExecutorService.scheduleAtFixedRate()的坑
  2. Oracle储存过程----删除表
  3. 对称加密DES(ECB/CBC/CFB/OFB/CTR)
  4. android picasso内存,Android LruCache(Picasso内存缓存)
  5. 通信算法之五十:4G LTE 小区搜索 同步,PCI MIB解析 PBCH解析
  6. LINUX 编译系统
  7. 计算机网络该怎么学?
  8. Smartbi:大数据平台架构设计系统
  9. 【C语言】三种方法实现字符串逆序函数
  10. 上传txt文件判断编码格式,并转UTF-8