常用设计模式摘录(一):创建型模式
引言
五一假期在实验室师兄们的推荐下,看完了《设计模式——可复用面向对象软件的基础》一书。看完后感觉大有裨益,遂决定写篇综述mark一下一些有意思和常用的设计模式。
本文主要从意图、类的框图示意和适用性三个角度来概括每个设计模式。当然,文中的设计模式是经过我自己挑选的,并不会涵盖《设计模式》这本书中的所有设计模式。如果大家看后有兴趣,不妨去深入看一下设计模式这本书。emmmm……也就254页,挺薄的一本书。
虽然理论上人的思维是面向对象的,但是对于刚开始写代码的人来说,面向过程是首选项。因为直线型的思维总是比较简单易懂的,而设计模式的工作就是把面向对象的类的设计范式给提炼出来。就好比一种解题技巧一样,解题技巧往往不是唯一的,但是你必须掌握其中一种,才能够加快程序的设计速度和编写速度。
分类
设计模式一共分为三类:创建型模式、结构型模式和行为模式。
简单来讲,结构型模式主要关注如何设计一个类里面的成员,创建型模式主要关注程序运行过程中如何对类进行实例化,而行为模式则描述了类的接口和一系列操作。
创建型模式
Abstract Factory(抽象工厂)
意图
抽象工厂的主要目的是为了实现跨平台或多功能下的一系列相关的类对象的联合使用,同时保证代码的封装性。
适用性
一个系统要独立于它的产品的创建、组合和表示时;
一个系统要由多个产品系列中的一个来配置时;
当要强调一系列相关的产品对象的设计以便进行联合使用;
当你提供一个产品类库,而只想显示它们的接口而不是实现时;
UML示意图
Builder(生成器)
意图
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式;
当构造过程必须允许被构造对象有不同的表示时;
UML示意图
Singleton(单件)
意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用性
当需要保证类只能有一个实例,而且程序可以在任何位置调用;
UML示意图
后续
在常用设计模式摘录(二)中将具体介绍结构型模式。