跳至主要內容

设计模式概述

gavin-james2019年10月8日设计模式设计模式大约 9 分钟

掌握设计模式的层次

设计模式介绍

设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是 某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度

《设计模式》 是经典的书,作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗称「四人组 GOF」)。

设计模式并不局限于某种语言,Java,PHP,C++ 都有设计模式。

设计模式的重要性

软件工程中,设计模式(design pattern)是对软件设计中 普遍存在(反复出现) 的各种问题,所提出的 解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在 1990 年代从建筑设计领域引入到计算机科学的。

拿实际工作经历来说,当一个项目开发完后,如果客户 提出增新功能,怎么办?。(可扩展性,使用设计模式,软件具有很好的扩展性)。

如果项目开发完后,原来程序员离职,你接手维护该项目怎么办? (维护性、可读性、规范性)

目前程序员门槛越来越高,一线 IT 公司(大厂),都会问你在实际项目中 使用过什么设计模式,怎样使用的,解决了什么问题

设计模式在软件中哪里?面向对象(oo)=> 功能模块[设计模式 + 算法(数据结构)] => 框架(使用到多种设计模式) => 架构(服务器集群)。

如果想成为合格软件工程师,那就花时间来研究下设计模式是非常必要的。

设计模式的目的

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

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点:

设计模式解决的是设计不足的问题,但同时也要避免设计过度。一定要牢记简洁原则,要知道设计模式是为了使设计简单,而不是更复杂。如果引入设计模式使得设计变得复杂,只能说我们把简单问题复杂化了,问题本身不需要设计模式。

当然,设计模式只是一个引导。在具体的软件幵发中,必须根据设计的应用系统的特点和要求来恰当选择。对于简单的程序开发,苛能写一个简单的算法要比引入某种设计模式更加容易。但对大项目的开发或者框架设计,用设计模式来组织代码显然更好。

设计模式要活学活用,不要生搬硬套。

需要特别声明的是,在日常应用中,设计模式从来都不是单个设计模式独立使用的。在实际应用中,通常多个设计模式混合使用,你中有我,我中有你。如下图:

分享金句:

设计模式类型

根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种:

共 23 种:

创建型模式(5 种)

以上 5 种创建型模式,除了工厂方法模式属于类创建型模式,其他的全部属于对象创建型模式。

结构型模式(7 种)

以上 7 种结构型模式,除了适配器模式分为类结构型模式和对象结构型模式两种,其他的全部属于对象结构型模式。

行为型模式(11 种)

以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。