读书笔记《道法自然--面向对象实践指南》第四章

第四章讲的是模式,并没有直接进入到面向对象分析的阶段,作者之所以这样做,我觉得是
因为在面向对象分析和设计的过程中,模式的使用对项目非常有帮助,才特意停下来开辟一
章给读者做一些模式知识的普及工作。

作者说到他刚读完《设计模式》时,头脑中反复出现的问题,包括:
·模式的概念是从哪里来的?
·什么是模式?
·模式和设计模式等价吗?开发人员常说的架构模式、GRASP模式又分别是什么东西呢?
·设计模式能为我们的软件开发带来什么?
·设计模式能减少代码量吗?
·设计模式能缩短开发周期吗?
·设计模式能提高软件的执行效率吗?
·设计模式和数据结构或算法有关吗?
·如何学习和实践设计模式?
·不同的设计模式之间有什么内在的关联?
·设计模式背后有什么核心的,或者说指导性的设计原则和设计理念吗?
·设计模式如何分类?
我们要学习掌握一个新东西的时候,也应该有这样一些问题才好,知道了这些问题的答案,
新东西也就可以说是完全掌握了。第4章后面的一大部分就是对这些问题的回答。

亚历山大在《建筑模式语言》一书中对模式的定义为:“每一个模式描述了一个在我们的环
境中不断发生的问题,并且描述了解决该问题的核心方案,这样你就可以多次使用这一解决
方案,而不必重复劳动”。根据模式的的定义,要以格式化的结构记录模式,以下四个基本
元素应该是不可少的:
模式的名称;(便于交流)
该模式所能解决的问题;
解决方案;
使用该模式后的结构(优缺点)。

在软件开发领域,人们提出了各种不同类型的模式,根据模式的特点和用途,可以分为以下
三类:
·架构模式:架构模式描述了软件系统基本的结构组织策略。
·设计模式:设计模式描述的是在软件系统的某一局部不断重现的核心解决方案,这种
解决方案以完善的设计结构出现,可以被应用到以后出现的类似的语境中。
·通用职责分配软件模式(GRASP模式):GRASP模式描述了在面向对象设计过程中职责
分配给系统中不同对象的有效经验和基本原则。

在《设计模式》一书中共列出了23种模式,这些模式之所以能够解决指定的问题,是由于它
们遵循了面向对象设计原则和设计理念:
·设计模式最根本的意图是适应需求变化;
·针对接口编程,而不是针对实现编程;
·优先使用聚合,而不是继承。(继承的耦合度要远远大于聚合)。

设计模式一般有两种分类方式:我们既可以按照设计模式的目的对它分类,也可以按照设计
模式的范围进行分类。这种按不同的标准,对模式进行分类,以加强对模式的理解和记忆的
方法,也是值得我们学习的。

你可能感兴趣的:(设计模式,数据结构,编程,算法,读书)