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.单例类只能有一 ...
随机推荐
- Docker最全教程——Redis容器化以及排行榜实战(十三)
前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写的过程中还会有完善和补充,后续可能会以番外来补充. 接下来会分享TeamCity.树莓派等内容,节奏可能会有点跳脱. 另外,长沙.NE ...
- c# 基于文件系统实现的队列处理类
现实业务中经常遇到需要队列处理的问题. 问题场景: 客户端记录设备运行数据,传输给服务器.在传输中可能存在延迟或中断情况.当中断时,系统传输数据可能因为无法传输或电脑重启,会导致服务器数据记录不连续. ...
- 『取巧』VS2015试用期过后 继续试用
背景: 个人电脑 安装的 VS2015 Community 社区版. 一直用得挺好,都忘了要登录. 直到近来,30天试用期过 —— VS弹窗:要登录用户名.密码 才能继续使用. 但是,输入了无数次 邮 ...
- 企业级镜像仓库harbor搭建
企业级镜像仓库harbor搭建 一. Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...
- Docker最全教程之使用Docker搭建Java开发环境(十七)
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
- 史上最全的大厂Mysql面试题在这里!
1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 从:io线程——在使用star ...
- openlayers4 入门开发系列之图层控制(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- cesium 之地图切换展示效果篇(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- 解决Error:All flavors must now belong to a named flavor dimension. Learn more at...
低版本的gradle里面不会出现这个错误,高版本出现,不多说,看如何解决 在defaultConfig{}中添加:flavorDimensions "default" 保证所有的f ...