从招式与内功谈起——设计模式概述(二)

194 篇文章 12 订阅
189 篇文章 394 订阅

1.2 设计模式是什么

       俗话说:站在别人的肩膀上,我们会看得更远。设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。

       设计模式的一般定义如下:

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

      狭义的设计模式是指GoF在《设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式,不过设计模式并不仅仅只有这23种,随着软件开发技术的发展,越来越多的新模式不断诞生并得以应用。

      设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。模式名称(Pattern Name)通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的(GoF设计模式中没有一个模式用人名命名,微笑);问题(Problem)描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因;解决方案(Solution)描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常解决方案通过UML类图和核心代码来进行描述;效果(Consequences)描述了模式的优缺点以及在使用模式时应权衡的问题。

      虽然GoF设计模式只有23个,但是它们各具特色,每个模式都为某一个可重复的设计问题提供了一套解决方案。根据它们的用途,设计模式可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种,其中创建型模式主要用于描述如何创建对象结构型模式主要用于描述如何实现类或对象的组合行为型模式主要用于描述类或对象怎样交互以及怎样分配职责,在GoF 23种设计模式中包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。此外,根据某个模式主要是用于处理类之间的关系还是对象之间的关系,设计模式还可以分为类模式和对象模式。我们经常将两种分类方式结合使用,如单例模式是对象创建型模式,模板方法模式是类行为型模式。

      值得一提的是,有一个设计模式虽然不属于GoF 23种设计模式,但一般在介绍设计模式时都会对它进行说明,它就是简单工厂模式,也许是太“简单”了,GoF并没有把它写到那本经典著作中,不过现在大部分的设计模式书籍都会对它进行专门的介绍。

      表1列出将要介绍的24种设计模式,其中模式的学习难度是我个人在多年模式使用和推广过程中的经验总结,仅作参考,模式的使用频率来自著名的模式推广和教育网站——http://www.dofactory.net

 

常用设计模式一览表

类型

模式名称

学习难度

使用频率

创建型模式

Creational Pattern

单例模式

Singleton Pattern

★☆☆☆☆

★★★★☆

简单工厂模式

Simple Factory Pattern

★★☆☆☆

★★★☆☆

工厂方法模式

Factory Method Pattern

★★☆☆☆

★★★★★

抽象工厂模式

Abstract  Factory Pattern

★★★★☆

★★★★★

原型模式

Prototype Pattern

★★★☆☆

★★★☆☆

建造者模式

Builder Pattern

★★★★☆

★★☆☆☆

结构型模式

Structural Pattern

适配器模式

Adapter Pattern

★★☆☆☆

★★★★☆

桥接模式

Bridge  Pattern

★★★☆☆

★★★☆☆

组合模式

Composite  Pattern

★★★☆☆

★★★★☆

装饰模式

Decorator  Pattern

★★★☆☆

★★★☆☆

外观模式

Façade  Pattern

★☆☆☆☆

★★★★★

享元模式

Flyweight  Pattern

★★★★☆

★☆☆☆☆

代理模式

Proxy  Pattern

★★★☆☆

★★★★☆

行为型模式

Behavioral Pattern

职责链模式

Chain  of Responsibility Pattern

★★★☆☆

★★☆☆☆

命令模式

Command  Pattern

★★★☆☆

★★★★☆

解释器模式

Interpreter  Pattern

★★★★★

★☆☆☆☆

迭代器模式

Iterator  Pattern

★★★☆☆

★★★★★

中介者模式

Mediator  Pattern

★★★☆☆

★★☆☆☆

备忘录模式

Memento  Pattern

★★☆☆☆

★★☆☆☆

观察者模式

Observer  Pattern

★★★☆☆

★★★★★

状态模式

State  Pattern

★★★☆☆

★★★☆☆

策略模式

Strategy  Pattern

★☆☆☆☆

★★★★☆

模板方法模式

Template  Method Pattern

★★☆☆☆

★★★☆☆

访问者模式

Visitor  Pattern

★★★★☆

★☆☆☆☆

【作者:刘伟 http://blog.csdn.net/lovelion

  • 115
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
高焕堂老师的讲义。看完必定多多受益。 目录如下: 第 1 章 設計樣式與Android 框架設計, 7 1.1 設計與樣式(即招式) 1.2 簡介設計樣式(Design Pattern) 1.3 從亞歷山大的建築樣式到GoF 設計樣式 1.4 舉例說明應用框架之意義 1.5 舉例說明框架設計基本思維:「變與不變之分離」 1.6 欣賞Android 裡的13 項設計樣式 第 2 章 Android 框架與應用類別的接合:卡榫(Hook)函數, 39 2.1 前言 2.2 何謂卡榫(Hook)函數 2.3 Android 的卡榫函數範例(一) 2.4 Android 的卡榫函數範例() 2.5 Android 的卡榫函數範例(三) 2.6 卡榫函數與樣式之關係 ---- 以Factory Method 和Template Method 樣式為例 第 3 章 Template Method 樣式, 63 3.1 複習:「變與不變之分離」原則 3.2 複習:「變與不變之分離」手藝 3.3 複習:框架的反向控制 3.4 介紹Template Method 樣式 3.5 Android 框架與Template Method 樣式 第 4 章 Factory Method 樣式, 93 4.1 Factory Method 樣式美何在? 4.2 介紹Factory Method 樣式 4.3 Android 框架與Factory Method 樣式 第 5 章 Observer 樣式, 115 5.1 Observer 樣式美何在? 5.2 介紹Observer 樣式 5.3 Android 框架與Observer 樣式 第 6 章 Abstract Factory 樣式, 137 6.1 Abstract Factory 樣式美何在? 6.2 介紹Abstract Factory 樣式 6.3 Android 框架與Abstract Factory 樣式 第 7 章 Adapter 樣式, 151 7.1 Adapter 樣式美何在? 7.2 介紹Adapter 樣式 7.3 Android 框架與Adapter 樣式 第 8 章 Composite 樣式, 181 8.1 Composite 樣式美何在? 8.2 介紹Composite 樣式 8.3 Android 框架與Composite 樣式 第 9 章 Strategy 樣式, 199 9.1 Strategy 樣式美何在? 9.2 介紹Strategy 樣式 9.3 Android 框架與Strategy 樣式 第 10 章 State 樣式, 213 10.1 State 樣式美何在? 10.2 介紹State 樣式 10.3 Android 框架與State 樣式 第 11 章 Proxy 樣式, 237 11.1 Proxy 樣式美何在? 11.2 介紹Proxy 樣式 11.3 Android 框架與Proxy 樣式 第 12 章 Bridge 樣式, 277 12.1 Bridge 樣式美何在? 12.2 介紹Bridge 樣式 12.3 Android 框架與Bridge 樣式 第 13 章 Iterator 樣式, 301 13.1 Iterator 樣式美何在? 13.2 介紹Iterator 樣式 13.3 Android 框架與Iterator 樣式 第 14 章 Mediator 樣式, 323 14.1 Mediator 樣式美何在? 14.2 介紹Mediator 樣式 14.3 Android 框架與Mediator 樣式 第 15 章 Façade 樣式, 343 15.1 Façade 樣式美何在? 15.2 介紹Façade 樣式 15.3 Android 框架與Façade 樣式 第 16 章 讓Android 框架之美 ---- Android 帶給IT 產業的啟示, 375 16.1 Android 美何在? 16.2 Android 對兩河流域硬體業之意義 16.3 Android 對兩河流域軟體業之意義 16.4 Android 與「軟硬整合」之路 16.5 結語 附錄, 403 附錄1: 基類與愚公移山, 404
高焕堂老师Android设计招式之美简体中文版,全书共15章节。 第 1 章 設計樣式與Android框架設計, 7 1.1 設計與樣式(即招式) 1.2 簡介設計樣式(Design Pattern) 1.3 從亞歷山大的建築樣式到GoF設計樣式 1.4 舉例說明應用框架之意義 1.5 舉例說明框架設計基本思維:「變與不變之分離」 1.6 欣賞Android裡的13項設計樣式 第 2 章 Android框架與應用類別的接合:卡榫(Hook)函數, 39 2.1 前言 2.2 何謂卡榫(Hook)函數 2.3 Android的卡榫函數範例(一) 2.4 Android的卡榫函數範例() 2.5 Android的卡榫函數範例(三) 2.6 卡榫函數與樣式之關係 ---- 以Factory Method 和Template Method樣式為例 第 3 章 Template Method樣式, 63 3.1 複習:「變與不變之分離」原則 3.2 複習:「變與不變之分離」手藝 3.3 複習:框架的反向控制 3.4 介紹Template Method樣式 3.5 Android框架與Template Method樣式 第 4 章 Factory Method樣式, 95 4.1 Factory Method樣式美何在? 4.2 介紹Factory Method樣式 4.3 Android框架與Factory Method樣式 第 5 章 Observer樣式, 115 5.1 Observer樣式美何在? 5.2 介紹Observer樣式 5.3 Android框架與Observer樣式 第 6 章 Abstract Factory樣式, 135 6.1 Abstract Factory樣式美何在? 6.2 介紹Abstract Factory樣式 6.3 Android框架與Abstract Factory樣式 第 7 章 Adapter樣式, 151 7.1 Adapter樣式美何在? 7.2 介紹Adapter樣式 7.3 Android框架與Adapter樣式 第 8 章 Composite樣式, 181 8.1 Composite樣式美何在? 8.2 介紹Composite樣式 8.3 Android框架與Composite樣式 第 9 章 Strategy樣式, 199 9.1 Strategy樣式美何在? 9.2 介紹Strategy樣式 9.3 Android框架與Strategy樣式 第 10 章 State樣式, 213 10.1 State樣式美何在? 10.2 介紹State樣式 10.3 Android框架與State樣式 第 11 章 Proxy樣式, 237 11.1 Proxy樣式美何在? 11.2 介紹Proxy樣式 11.3 Android框架與Proxy樣式 第 12 章 Bridge樣式, 277 12.1 Bridge樣式美何在? 12.2 介紹Bridge樣式 12.3 Android框架與Bridge樣式 第 13 章 Iterator樣式, 301 13.1 Iterator樣式美何在? 13.2 介紹Iterator樣式 13.3 Android框架與Iterator樣式 第 14 章 Mediator樣式, 323 14.1 Mediator樣式美何在? 14.2 介紹Mediator樣式 14.3 Android框架與Mediator樣式 第 15 章 Façade樣式, 343 15.1 Façade樣式美何在? 15.2 介紹Façade樣式 15.3 Android框架與Façade樣式 第 16 章 Android框架之美 ---- Android帶給IT產業的啟示, 375 16.1 Android美何在? 16.2 Android對兩河流域硬體業之意義 16.3 Android對兩河流域軟體業之意義 16.4 Android與「軟硬整合」之路 16.5 結語

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值