3分钟帮你理解常用的5种设计模式

新闻
作为一个合格的程序员你一定听说过设计模式,设计模式有很多种,不用精通所有,至少得对常见的几种融会贯通。设计模式就相当于数学中的几何定理,计算公式,掌握了它就可以直接代入。

 作为一个合格的程序员你一定听说过设计模式,设计模式有很多种,不用精通所有,至少得对常见的几种融会贯通。设计模式就相当于数学中的几何定理,计算公式,掌握了它就可以直接代入。

 

[[351457]]

 

工厂模式

这是一个最基础的设计模式,也是最常用的设计模式,它有简单工厂模式,工厂模式,抽象工厂模式。各有各的优缺点。

故名思意,它就是一个加工厂,不同于现实的是,此处生产的不是生活用品,而是我们面向对象编程中最重要的对象。工厂模式比简单工厂模式更弹性化,遵循了开发-封闭原则。

抽象工厂就像现实中的工厂一样,好处大家都知道,可以批量生产与定制,因为有不一样的模具,就可以生产出大家需要的各种类型产品。

软件开发中,我们更关注的是使用对象的方法,至于如何创建对象我们并不关心,抽象工厂只要定制我们所需的产品功能接口,然后让工厂实现接口生产对象即可。

单例模式

这是一个非常简单的模式,只包含了一个类,重点要管理单例实例的创建,一般为了避免使用者错误创建多余的对象,单例的构造函数和析构函数声明为私有函数。多种单例如果有依赖关系,就要仔细处理构建顺序。它有几个优点,使用简单,可以避免使用全局变量,隐藏对象的构建细节,避免多次构建容易引起的错误。总之,使用它不要急于一时的需求,因为如果将某类设计为单例就限制了可扩展性,也会形成在各种可以随意引用的一种趋向,不过这正也是它的便利之处。

装饰器模式

人靠衣装马靠鞍,好的衣服可以提升一个人的气质,但不会改变外貌与功能,这就是装饰器模式,通过装饰一个对象让它更强大却不会改变它的本质。

举一个软件开发中的例子,比如你们已经做好一个图片传送功能,也经过了测试和线上测试这个功能很完美没毛病,可是突然出现了一个新的需求,想要发送图片时,还能语音提醒,你们怎样在不影响原有的功能情况下实现它呢,现在就可以使用装饰器,也就是给图片发送类装饰一个语音功能。

适配器模式

适配器是什么?就比如耳机,它可以连接在你的手机上也可以连上别人的手机,电脑也可以,它就是一种适配器。

程序员们几乎不可能离开数据库去单独开发一款应用,所以选择什么数据库是最需要关心的事情,一旦选择错误,后期在性能上就会遇见很多瓶颈,适配器模式可以让程序员们在不用修改或者改很少代码的情况下进行数据库的随意切换。

第一步要定义好适配器接口,接着让各种数据库实现我们定义好的接口,在代码里用定义好的方法,当你想要切换数据库时,将该数据库实现对应接口的方法,就可以做到无缝连接啦。

策略模式

策略就是实现目标方案的集合,它们都是用来实现一件事情的。

在软件开发中,一个对象可以对不同场景使用不同的策略去实现同一个功能,比如在学习中老师会制定一个本学期期末目标是多少,但是每个同学怎样去完成它这个过程都是不一样的,但是结果是一样的。

某宝首页的千人千面也是策略模式,都显示了商品,但面对不同的人不同的喜好,商品就是不一样的,这就是由策略决定的。

总结

设计模式一定源于生活,其实,万物都是来源于生活,但经过我们的学习提炼之后,它便高于生活。设计模式可以帮助你解决大部分问题,使用它会让你的代码看起来更加清晰,有条理。

责任编辑:华轩 来源: 今日头条
相关推荐

2021-03-31 09:10:25

UI设计经验

2011-05-26 09:03:17

JSONjavascript

2020-11-23 16:23:59

CSS设计技术

2020-09-14 11:30:26

HTTP3运维互联网

2020-09-11 09:35:18

前端JavaScript策略模式

2012-06-28 10:26:51

Silverlight

2021-06-07 09:51:22

原型模式序列化

2022-11-02 17:57:36

Nginxrootalias

2018-06-26 05:23:19

线程安全函数代码

2023-07-26 07:11:50

LVM底层抽象

2018-05-06 16:26:03

关联规则数据分析关联规则推荐

2019-07-24 09:28:36

Node.jskoa架构

2019-04-01 14:59:56

负载均衡服务器网络

2011-08-08 09:22:10

Python

2017-02-21 13:00:27

LoadAverage负载Load

2018-07-31 16:10:51

Redo Undo数据库数据

2023-12-27 08:15:47

Java虚拟线程

2021-06-18 07:34:12

Kafka中间件微服务

2021-01-29 11:43:53

SSHLinux命令

2021-04-30 16:23:58

WebRTC实时音频
点赞
收藏

51CTO技术栈公众号