一、设计模式从何而来?
1. 如果把软件工程里面的技术分为招式
和内功
,你认为哪些技术是招式
?哪些技术是内功
?
-
招式:
Java、C#、C++ 等编程语言;Eclipse、Visual Studio 等开发工具;JSP、ASP.net 等开发技术;Struts、Hibernate、JBPM 等框架技术,所有这些我们都可以认为是招式。 -
内功:
数据结构、算法、设计模式、重构、软件工程等则为内功。 - 招式可以很快学会,但是内功的修炼需要更长的时间。
2. 在介绍设计模式的起源之前,我们先要了解一下模式
的诞生和发展,请问模式
起源于哪个领域?(了解即可)
- 与很多软件工程技术一样,模式起源于建筑领域,毕竟与只有几十年历史的软件工程相比,已经拥有几千年沉淀的建筑工程有太多值得学习和借鉴的地方。
3. 什么是模式?(或者说对模式的定义,非常重要)
-
模式:
是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。 - A Pattern is a successful or efficient solution to a recurring problem within a context.
4. 软件模式、设计模式的起源?(了解即可)
最早将模式的思想引入软件工程方法学的是1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自称的四位著名软件工程学者,他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。
5. 软件模式的基础结构主要有四部分构成,是哪四部分呢?
- ①问题的描述(待解决的问题是什么?)
- ②前提条件(在何种环境或约束条件下使用?)
- ③解决(用什么方案解决的?)
- ④效果(有哪些优点,有哪些缺点?)
- 设计模式:用于在特定条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案
- 它融合了众多专家的设计经验,已经在成千上万的软件中得以应用。
二、设计模式是什么?
1. 设计模式可分为创建型(Creational)、结构型(Structural)、行为型(Behavioral)三种,分别用一句描述这三种类型?
- 创建型模式:主要用于描述如何创建对象
- 结构型模式:主要用于描述如何实现类或对象的组合
- 行为型模式:主要用于描述类或对象怎么交互以及怎么分配职责
2. 24 种设计模式中的难度以及使用频率介绍(优先学习频率最高的)
image.png image.png三、设计模式有什么用?
1. 设计模式到底有什么用?(至少要能回答两种)
- ① 设计模式通常来源于众多专家的经验和智慧,使用这些方案可以让我们避免很多重复性的问题
- ② 同事之间的交流通常都很耗时,而设计模式是一套通用规范,这让我们和同事交流的时候更加通俗易懂,提高效率
- ③ 最后一点对初学者很重要,学习设计模式将有助于初学者更加深入地理解面向对象的思想,让你知道:如何将代码分散在几个不同类中?为什么要有"接口"?何谓针对抽象编程?何时不应该使用继承?如何不修改源代码增加新功能?同时还能让你更好地阅读和理解现有类库(如 JDK)与其他系统中的源码,让你早日脱离面向对象编程的"菜鸟期"。
2. 如何判断你已经掌握了某种设计模式?(非常重要)
- ① 这个设计模式的意图是什么?它解决了什么问题、什么时候可以使用它?
- ② 它是如何解决的?掌握它的结构图,记住它的关键代码
- ③ 至少能够想到它的两个应用实例,一个生活中的,一个软件中的
- ④ 这个模式的缺点是什么,在使用时要注意什么?
网友评论