第1章 设计模式概述

来源:互联网 发布:托尼帕克数据 编辑:程序博客网 时间:2024/05/22 17:14

第1章 设计模式概述

设计模式仅仅是一些在项目之间和程序员之间复用面向对象代码的简便方法.
设计模式描述了对象如何进行通信才能不牵涉相互的数据模型和方法.
保持各对象的独立性一直是一个好的面向对象(Object Oriented,OO)程序设计的目标.如果你一直在努力使对象只涉及各自的业务,那么你很可能已经在使用某些通用的设计模式了.


1.1 定义设计模式

设计模式是对读者经常遇到的设计问题的可再现的解决方案
设计模式建立了一系列描述如何完成软件开发领域中特定任务的规则

设计模式不仅仅局限于对象的设计,还涉及到对象之间的相互作用。

某些模式应用很广,也有些作者将模式行为归成几类,每类适用一种问题.

我们不需要记住这些模式,实际上大部分模式是被发现而不是被设计出来的.只要觉得好大家会无形中按照这种模式来解决一些问题.寻找这些模式的过程就是"模式挖掘".

本书分成三类:创建型,结构型和行为型.

创建型模式是创建对象而不是直接实例化对象,这会使程序在判断给定情况下创建哪一个对象时更为灵活.

结构型模式可以将一组对象组合成更大的结构,例如复杂的用户界面或报表数据.

行为型模式定义系统内对象间的通信,以及复杂程序中的流程控制。


1.2 学习过程

学习设计模式的三个阶段:接受,认可,领会。

1.4 关于面向对象方法

使用设计模式的根本原因是为了保持类之间的隔离,防止相互之间了解太多的内容;
另一个重要的原因是,使用这些模式可以帮助读者避免重复开发,能用其他程序员容易理解的术语描述你的程序设计方法。

分离类的目的有封装和继承,几乎所有具备OO能力
的语言都支持继承。几乎所有具备OO能力的语言都支持继承。

一个继承父类的类能访问父类中的所有方法和所有非私有变量,然而,如果以一个功能完整的类开始继承层次结构,可能会过多地限制住自己,也会给特定方法的实现带去累赘。

针对接口编程,而不是针对实现编程。思想的具体内容为:
在任何类层次结构的顶端,定义的是一个抽象类或一个接口,他没有实现方法,但定义了该类需要支持的方法。这样在所有的派生类中,就会有更大的自由度去实现这些方法,能最大限度地满足你的要求。

另外一个需要考虑的重要概念是对象组合,这是一种可包含其他对象的对象结构,即把几个对象封装在另一个对象中。随着编写复杂的程序就可体会到对象组合的优点:新的对象拥有一个最适合于要完成的目标的接口,而不是拥有父类中的所有方法。
这就是“优先使用对象组合,而不是继承”的思想。

1.6 本书的组织结构

工厂模式和命令模式使用很广泛
中介者模式也使用得多
备忘录模式应用到状态模式中
职责链模式用到解释器模式中
单件模式用到享元模式中
适配器模式和桥接模式中介绍了ListBox,DataGrid,TreeView

整个.net系统的设计目标是,使基于Web的客户——服务器交互操作更加灵活,而本书则关注于一般的面向对象程序设计问题,而不是如何编写基于Web的系统。