Yii2设计模式——设计模式简介
我们首先来思考一个问题:作为工程师,我们的价值是什么?
笔者认为是——解决用户问题。
我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术;我们的任何经验,如果不能对解决新的问题有用,那这经验就是过时的。工程师不是空谈者,也不是理论家,再好的理论,再好的设计,不能落地变成产品,不能解客户燃眉之急,那终究也是水中月镜中花,迟早要被淘汰。能解决现实中的问题才能体现作为工程师的价值。
但是,所有现实中的问题,都不是抽象的,比如我们不会提出一个“人是什么”“什么是善”这样的问题。我们要解决的问题,一定是特定场景下,加了一堆定语和描述,十分场景化的。比如:如何降低模块之间代码耦合度,如何解决高并发中的c100k问题,如何提高工程代码的可维护性等等。那么,针对这些特定的问题,早就经前人踩坑,总结出来的被认为行之有效的方式,就慢慢的沉淀为一种被称为“模式”的东西。从这个角度来说,算法是模式,设计模式是模式,架构也是模式——不同层面的解决方案而已。
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。简单地说,模式就是在特定问题场景下,解决特定问题的固定的套路。
设计模式简介
软件行业的设计模式,起源于1994年由GOF合著的《设计模式 - 可复用的面向对象软件元素》一书,该书首次提出了设计模式的概念,并且给出了23中经典的设计模式。此外讲设计模式的《Head First》一书通俗易懂、老少咸宜,也值得一看。
使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。因为设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。是无数正反经验教训的最终结晶,是设计智慧的最终载体。
所有的设计模式都有一些常用的特性:模式名称(a pattern name),问题陈述(a problem statement),解决方案(a solution)和效果(consequences)。模式名称用来描述模式的问题、解决方案和效果;问题陈述是用来说明这个模式的应用的领域;解决方案描述了这个模型的执行;效果则是这个模式使用效果和权衡。
设计模式使代码编制真正工程化,是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
设计模式的主要作用
设计模式有两个主要作用:
最佳的实践
设计模式是长时间优秀经验的沉淀,提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式就是让你站在巨人的肩上,看得更远,学得更快,少走弯路。
开发人员的共同平台
设计模式是程序员之间的共同语言,而且就像成语一样凝练。例如,单例设计模式意味着复用单个对象,观察者模式意味着一对多和解耦,“单例模式”“观察者”寥寥数语就能告诉对方,你的应用场景是啥、你要解决啥问题、你大致是怎么去编码实现的,从而在程序员之间高效的传递信息。
简言之,设计模式就是最佳实践。
Yii2设计模式——设计模式简介的更多相关文章
- [.net 面向对象程序设计深入](13)实战设计模式——设计模式使用场景及原则
[.net 面向对象程序设计深入](13)实战设计模式——设计模式使用场景及原则 1,什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...
- [.net 面向对象程序设计深入](18)实战设计模式——设计模式使用场景及原则
[.net 面向对象程序设计深入](18)实战设计模式——设计模式使用场景及原则 1,什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...
- Yii2 设计模式——设计模式简介
我们首先来思考一个问题:作为工程师,我们的价值是什么? 笔者认为是——解决用户问题. 我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术:我们的任何经验,如果不能对解决新的问题有用, ...
- SpringMVC(前端设计模式)简介
一.提供一个入口,让所有的请求都进行 / ,然后再分配给对应的页面,这就是前端设计模式(front) @WebServlet("/") 不过滤 .jsp public class ...
- JavaScript 设计模式之简介
一.设计模式概念解读 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.无数实战代码设计经验的总结.使用设计模式是为了让系统代码可重用.可扩展.可解耦.更容易被人 ...
- php八大设计模式之简介篇
设计模式的在面向对象中的重要性? 更深入的理解面向对象的思想,有利于开发出扩展性强的程序.在 PHP 面向对象中有一个 "开闭原则" :"软件实体应当对扩展开 ...
- php 23种设计模式 - 设计模式简介以及分类
一. Introduction[介绍] 设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题.设计模式并不一定就是一个类库或者第三方框架,它们更多的表现为一种思想并且广泛地应用在系 ...
- Yii2 三层设计模式:SQL Command、Query builder、Active Record(ORM)
用Yii2也有一段时间了,发现Yii2 Framework对Database的操作有非常良好的结构和弹性. 接下来介绍三种数据库操作方式. SQL Command Level: // Get DB c ...
- java设计模式设计模式
JAVA设计模式之单例模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一 ...
随机推荐
- Eclipse 出现项目没有错但是项目名称却有红色感叹号或者红叉的解决办法
错误的起因是本人因为一不小心点了下面圈出来的某一个按钮,具体记不清楚了(好像是"remove from build path"),然后整个项目变得很奇怪了,所有的包都变成了一个普通 ...
- git程序多版本维护方案
目前所在公司开发的系统为一个基础版本(通用版)包含了行业内一些基础功能实现,后期根据不同厂家进行定制版的开发,考虑独立项目的话代码维护不太方便,并且如果通用版本有变动的话,其他定制版本也都需要进行变动 ...
- Shiro安全框架【快速入门】就这一篇!
Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and easy-to-use Java security framework that perfo ...
- HTML文本框样式大全
粘贴自Christian.Cao 博客园地址 : https://www.cnblogs.com/QQ862668193/p/6893797.html 输入框景背景透明:<input style ...
- github SSH配置
目录 github SSH配置 前言 ssh 配置 github SSH配置 前言 github有两种更新的渠道,一种是https的,一种是ssh的,其中https每次都要输入密码,非常烦.所以,最好 ...
- pgsql sql 统计整理
字符字段转整型查询: SELECT mon_id as staTime,SUM (CAST ( index_value AS INT )) AS totalCount FROM aidata.rep_ ...
- 为什么MIP-Cache存在
在去年十月的一篇 博客文章 提到 MIP 加速器是由 MIP-HTML, MIP-JS 和 MIP-Cache 三个模块共同产生加速效果的.MIP-HTML 和 MIP-JS 都是开源的,在 GitH ...
- Linux 桌面玩家指南:07. Linux 中的 Qemu、KVM、VirtualBox、Xen 虚拟机体验
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- [Swift-2019力扣杯春季决赛]3. 最长重复子串
给定字符串 S,找出最长重复子串的长度.如果不存在重复子串就返回 0. 示例 1: 输入:"abcd" 输出:0 解释:没有重复子串. 示例 2: 输入:"abbaba& ...
- 【ElasticSearch篇】--ElasticSearch从初识到安装和应用
一.前述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,在企业中全文搜索时,特别常用. 二.常用概念 clu ...