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.单例类只能有一 ...
随机推荐
- eShopOnContainers 知多少[9]:Ocelot gateways
引言 客户端与微服务的通信问题永远是一个绕不开的问题,对于小型微服务应用,客户端与微服务可以使用直连的方式进行通信,但对于对于大型的微服务应用我们将不得不面对以下问题: 如何降低客户端到后台的请求数量 ...
- go语言视频教程和电子书下载
golang视频教程: https://noxue.com/p/399809259943301 go语言 pdf电子书: Design Pattern In Go[go语言设计模式].pdf Go P ...
- SpringCloud分布式微服务搭建(三)
本例子是一个springcloud的configserver,client例子 利用git存储各个服务的配置文件 server获取配置文件的仓库位置,并把server注册到eureka中,同时为了实现 ...
- mariaDB vs mysql
mariaDB vs mysql 今天遇到一个库使用的是mariaDB的数据库版本 Server version: 10.1.20-MariaDB MariaDB Server 理了一下mariaDB ...
- Python中pathlib模块
Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...
- TiDB之mac上搭建及调试技巧
此文目的 由于本人最近已经成为TiDB的粉丝,所以就开始各种研究TiDB的源码,研究源码这个事情,首先就需要在自己电脑上不断的调试及修改.TiDB本身的代码是非常容易编译和调试的,但是要把PD.TiK ...
- 『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制
背景: GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿. //其实,我不用这三个 属性 好多年了 //而且,这三个属性 在关键时刻还有可能 帮倒忙 //关键是:这三个属性,鸟用都没有 ...
- css3 之炫酷的loading效果
css3 之炫酷的loading效果 今天实现了一个炫酷的loading效果,基本全用css来实现,主要练习一下css3的熟练运用 js需要引入jquery 只用到了一点点js 先看效果图 html: ...
- PostgreSql 使用dblink跨库
此篇介绍下psql下dblink的使用方式,帮助自己记录以备后需.dblink是psql下的扩展功能,可以实现在一个数据库中远程操作另外一个数据库,是实现跨库的一种方法.下面步入正文. 安装dblin ...
- FPGA高速ADC接口实战——250MSPS采样率ADC9481
一.前言 最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分.ADC这一器件经常用于无线通信.传感.测试测量等领域.目前数字系统对高速数据采集的 ...