欢迎光临散文网 会员登陆 & 注册

设计模式怎么学才能成为面试加分项?42页6大问题带你透彻理解设计模式!

2023-07-04 16:20 作者:马士兵说  | 我要投稿

什么是设计模式?

设计模式是解决常见软件设计问题的经验总结,可以看成是一本代码设计宝典,帮助开发人员更好地完成软件设计工作。

1994 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。

扩展回答: 设计模式的分类

GoF设计模式只有23个,但是它们各具特色 ,每个模式都为某一个可重复的设计问题提供了一套解决方案。

根据它们的用途,设计模式可分为 创建型(Creational) 结构型(Structural)行为型(Behavioral);

创建型模式(5)提供创建对象的机制,提升已有代码的灵活性和可复用性;

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

不常用的有:原型模式。

结构型模式(7)介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效常用的有:代理模式、桥接模式、装饰者模式、适配器模式。

不常用的有:门面模式、组合模式、享元模式。

行为模式(11)负责对象间的高效沟通和职责传递委派;

常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。 

不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

曾有人说过“设计模式数据结构算法就好比喻九阳神功,你会了九阳神功再学习其他的武功那就事半功倍”,这个比喻恰到好处。

在实际中我们也经常跟设计模式打交道,比如我们刚开始面试的时候基本上大部分的IT公司都会问你:

我们从“能写代码”“写好代码”再到“能够设计代码”,这不仅仅是技术的提升也是我们编程思想的提升,其中的关键就是设计模式。

开发过程中面临着高内聚低耦合性、可维护性、可扩展性、可重用性以及灵活性等多方面的挑战,使用设计模式就是为了让程序变得更好。而能否理解并掌握设计模式已变成了衡量程序员能力的标准之一。

下面我们就来认识下九阳神功的基础功之——设计模式

一、设计模式是什么?

设计模式(Design pattern)简单来说就是在软件工程中,我们的前辈们在程序不断开发的过程中为了可以实现代码重用、可扩展、保证代码可读性和可靠性、提高我们的开发和维护效率,而总结出了一套被反复使用、多数人知晓的、经过分类编目的代码设计经验(让我们少走弯路)。

目前开发中比较流行的还是1994年GoF(Gang of Four四人组)发布的Design patterns书中的提到的23种经典设计模式。

当然现在设计模式的种类不仅仅这些,是一些大佬或者公司内部研发的设计模式,只不过并没有公开而已。

二、设计模式的优势:

◆重用设计,实现代码的重用。

◆提高代码质量,设计模式有助于我们编写出高质量,可维护的代码,让系统重构变得更加容易。

◆提高代码阅读能力

优秀的代码毋庸置疑一定会使用设计模式,如果不了解设计模式的情况下去阅读肯定难以理解,也不能从同一高度的去分析源码或者别人写的代码。

◆节省沟通成本

工作中讨论问题的人都知晓设计模式的话,就不需要对设计模式做更多的解释,只需要讨论使用那种设计模式就可以,在开发文档中采用设计模式词汇其他人也更容易你的想法和做法。

◆节省时间

往往采用正确的设计模式,可以节约我们开发和维护的大量时间。

三、设计模式的分类:

23种经典设计模式按照类型来分的话可以分为三类:创建型、 结构型、行为型。

这23种设计模式其实我们开发中都有接触,只不过我们可能使用它的时候对它并不熟悉。

以java语言为例,例如:java的IO流使用的高级流BufferedInputStream就使用了装饰者设计模式,集合List和和Set遍历使用的Iterator就是使用了迭代器模式,JDBC连接数据库加载驱动获取连接就使用了桥接模式,对象的深浅层次拷贝就是使用的原型模式等等。

Java语言中非常流行的框架spring被称为非常厉害的框架,设计模式在spring中的展现可谓是淋漓尽致。

四、42页6大问题带你透彻理解设计模式

什么是设计模式?

设计模式中有哪些原则?

说—说单例模式?

说─说简单工厂模式?

说—说工厂方法模式?

抽象工厂模式了解吗?

限于文章篇幅原因,就展示到这里了,资料已整理成文档,有需要的小伙伴帮忙转发文章后,查看评论区获取方式! 

另有设计模式书籍赠送~

设计模式怎么学才能成为面试加分项?42页6大问题带你透彻理解设计模式!的评论 (共 条)

分享到微博请遵守国家法律