当前位置: 首页 > news >正文

设计模式详解:模式汇总与索引清单

从本篇开始,和您一起进入设计模式的世界。

之前用C#做微信微信公众号开发系列文章,更多的是原生模式,帮助猿友们理解业务流程和基本实现方法,但是那些类的实现仍然是用面向过程的思维方式,不利于后期的扩展,没法适应大规模、高并发的需求。一起学完了设计模式之后,咱们再来重构一套微信公众号开发的程序代码。

为什么要使用设计模式

很明显,这就跟我们看别人的代码来学习一样,是为了学习里面的精髓。每一本设计模式的书都会告诉你,这些都是在讲究如何对修改封闭,对扩展开放的事情。我们学东西,重要的是学idea,次要的是学technique。翻译成编程的语言就是,我们学设计模式,是为了学习如何合理的组织我们的代码,如何解耦,如何真正的达到对修改封闭对扩展开放的效果,而不是去背诵那些类的继承模式。

设计模式要是真的学会了,你们会发现在写代码的时候,脑子里根本没有什么设计模式,你都已经融会贯通了。代码写完了一看,这里有模式,那里也有模式。这就如同我们讲话不会去考虑语法,但是说出来大部分的话都是符合语法要求的。这也如同我们写程序的时候不会总是去想程序的语法的问题,我们自然而然写出来的东西就是可以编译的。道理都是一样的。

不过为了合理的利用设计模式,我们应该明白一个概念,叫做扩展点。扩展点不是天生就有的,而是设计出来的。我们设计一个软件的架构的时候,我们也要同时设计一下哪些地方以后可以改,哪些地方以后不能改。倘若你的设计不能满足现实世界的需要,那你就要重构,把有用的扩展点加进去,把没用的扩展点去除掉。这跟你用不用设计模式没关系,跟你对具体的行业的理解有关系。

怎样设计一个优秀的模式

在前面提到了设计模式是实现了七大设计原则的具体方式,只要满足七大设计原则,我们就可以认为这是一个好的模式,那么这七大原则分别是什么,如下图:

设计模式的常见分类和模式名称

 

设计模式详解与案例索引链接

面向对象的七大设计原则;

相关文章:

  • SpringSecurity实战-第5章 自动登录和注销登录
  • Python基础内容训练9(文件操作)
  • 冰冰学习笔记:list的简单模拟
  • 基于鸽群优化算法的线性规划求解matlab程序
  • 【博客505】k8s Sig-scheduler Coscheduling调度器插件原理
  • 【Linux】I/O多路复用-SELECT/POLL/EPOLL
  • Python解释器路径寻找规则
  • [Qt桌面开发]一个Qt简单界面的开发
  • 文本的换行与包裹 之可能是全网最详细的 line-break 中文介绍
  • Matlab项目合作
  • 【Eigen】Chapter4 几何模块 Geometry
  • 【GAMES-104现代游戏引擎】4、引擎渲染基础(渲染基础数据、全局光照、PBR、阴影)
  • Linux中断概述
  • 【统计学习|书籍阅读】第一章 统计学习方法概论 p1-p24
  • 操作系统——计算机系统概述补充
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【node学习】协程
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Java Agent 学习笔记
  • Javascript编码规范
  • JAVA并发编程--1.基础概念
  • mockjs让前端开发独立于后端
  • Mysql数据库的条件查询语句
  • vue-router的history模式发布配置
  • 从0到1:PostCSS 插件开发最佳实践
  • 关于for循环的简单归纳
  • 解析 Webpack中import、require、按需加载的执行过程
  • 全栈开发——Linux
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 学习HTTP相关知识笔记
  • 学习使用ExpressJS 4.0中的新Router
  • 一个项目push到多个远程Git仓库
  • 用 Swift 编写面向协议的视图
  • 智能合约Solidity教程-事件和日志(一)
  • hi-nginx-1.3.4编译安装
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #宝哥教你#查看jquery绑定的事件函数
  • #预处理和函数的对比以及条件编译
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (Git) gitignore基础使用
  • (ZT)一个美国文科博士的YardLife
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 物件導向與老子思想 (OO)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)德国人的记事本
  • **PHP二维数组遍历时同时赋值
  • .NET gRPC 和RESTful简单对比
  • .Net环境下的缓存技术介绍
  • .Net面试题4