[设计模式]--Design Patterns Explained学习笔记[chap5]

5 An Introduction to Design Patterns

5.1 Overview of Design Patterns

设计模式就是将面向对象软件设计中的经验通过一定的方式表达出来,帮助作出有利于系统复用的选择,避免设计损害了系统的复用性,通过提供一个显式类和对象作用关系以及他们之间潜在联系的说明规范,甚至能够提高已有系统的文档管理和系统维护的有效性,简而言之,设计模式可以帮助设计者更好更快的完成系统设计。

设计模式的四要素:

1. 模式名称(Pattern Name):一个注记名,基于模式词汇表,程序员就可以在一起就此涉及模式进行讨论,所以应找到恰当的模式名称。

2. 问题(Problem):描述了在何时使用设计模式,阐述了该设计模式存在的前因后果,有时候,问题部分会包括使用该设计模式必要的先决条件。

3. 解决方案(Solution):描述了设计的组成部分,他们之间的相互关系,各自的职责,如何相互协作。因为设计模式是一个模版,用于多种不同的场合,所以解决方案并不会描述一个特定具体的设计或者实现,而是提供一些问题他们共同的抽象描述,以及如何用一个一般意义的元素组合(类和接口的组合)来解决这个问题。

4. 效果(Consequences):模式使用的效果以及使用模式应权衡的问题,软件效果大多关注于对时间以及空间的衡量,但他们也表述了对语言和实现问题,复用是面向对象设计的要素,所以模式效果应该包括它对系统的灵活性,扩充性,可移植性的影响,显示的列出这些效果对理解和评价这个设计模式很有帮助。

设计模式中最为著名的书籍是GoF的《Design Patterns: Elements of Reusable Object-Oriented Software》,该书从创建型,结构型与行为型三个方面对软件设计中的经验组合为23个模式,同时给出如何应用各种模式进行软件设计的范例。

5.2 Why Study Design Patterns

学习设计模式的原因如下:

1、复用已有的高质量的对通用问题的解决方案;

2、建立通用的术语提高团队间交流的效率;

3、站在更高的角度看待问题,提高设计水平;

4、提高团体交流与个人学习能力;

5、改善代码的可维护性;

6、演示基本的面向对象设计原则;

7、对于大型继承体系寻找更好的替换策略。

5.3 The Classification of Design Patterns

根据目的准则(即模式用于完成什么样的工作)对23条模式分为创建型,结构型,行为型三类:

1、创建型模式(5种)

Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类;

Builder:将一个复杂对象的创建与其表示分离,使得同样的构建过程可以创建不同的表示;

Factory Method:定义一个用于创建对象的接口,让子类决定实例化哪一个类,它使一个类的实例化延迟到其子类;

Prototype:用原型实例化指定创建对象的种类,并且通过拷贝这些原型创建新的对象;

Singleton:保证一个类只有一个实例,并提供一个访问它的全局访问点。

2、结构型模式(7种)

Adapter:将一个类的接口转换为客户希望的另外一个接口,它使得原本由于接口不兼容而不能一起工作的类可以一起工作;

Bridge:将抽象部分与其实现部分分离,使他们可以独立地变化;

Composite:将对象组合成树型结构以表示“部分――整体”层次结构,使得用户对单个对象与组合对象的使用具有一致性;

Decorator:动态地为对象添加一些额外的职责,就扩展功能来说,它比生成子类更为灵活;

Façade:为子系统中的一组接口提供一个一致的界面,它定义了一个高层接口,这个接口使得这一子系统更加容易使用;

Flyweight:运用共享技术有效地支持大量细粒度的对象;

Proxy:为其他对象提供了一种代理以控制对这个对象的访问。

3、行为型模式(11种)

Chain of Responsibility:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象练成一条链,并沿着这条链传送请求,直到有一个对象处理为止;

Command:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作;

Interpreter:给定一个语言,定义它的文法的一种表示,并定义了一个解释器,这个解释器使用该表示来解释语言中的句子;

Iterator:提供一种方法顺序地访问一个聚合对象中的各个原色,而不需要暴露该对象的内部表示;

Mediator:用一个中介对象来封装一系列的对象交互,中介这使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互;

Memento:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象外部保存这个状态,这样以后就可将该对象恢复到原先保存的状态;

Observer:定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新;

State:允许一个对象在其内部状态发生改变时改变它的行为,对象看起来似乎修改了它的类;

Strategy:定义一系列的算法,把他们一个个封装起来,并且使他们可以相互依赖,本模式使得算法可以独立于它的客户而变化;

Template Method:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,它使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;

Visitor:表示一个作用于某对象结构中的各元素的操作,使你可以在不改变元素的类的前提下定义作用于这些对象元素的新操作。

根据范围准则(即模式是用于类还是对象)分为类模式与对象模式两种,类模式指集中于处理类间关系的模式,有Factory Method, Adapter, Interpreter, Template Method,其他的全部属于对象模式。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
If you have ever bought any programming books, you might have noticed that there are two types of them: books that are too short to understand the topic and books that are too long making it inevitable that you get bored. We've tried hard to avoid both of these categories with Design Patterns Explained Simply. This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is not tied to any specific programming language and will be good for you as long as you have a basic knowledge of OOP. Most chapters are available on the website, so you can check out the simplicity of the language in the book and the way materials are presented. Why should I read this book? It's simple. It's written in clear and simple language that makes it easy to read and understand. It's short. Yes, there are no useless demos or huge code listings — just clear and easy-to-understand descriptions with many graphical examples. When you finish reading this book, you'll have good reason to go to your boss and ask him for apromotion. Why? Because using design patterns will allow you to get your tasks done twice as fast, to write better code and to create efficient and reliable software architecture. How do I become a programming ninja? The main difference between a ninja and a novice is the knowledge of secret coding tricks, as well as the awareness of most pitfalls and the ability to avoid them. Design patterns were created as a bible for avoiding problems related to software design. Doesn’t that make it a true ninja’s handbook? Table of Contents Creational patterns Abstract Factory Builder Factory Method Object Pool Prototype Singleton Structural patterns Adapter Bridge Composite Decorator Facade Flyweight Private Class Data Proxy Behavioral patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Null Object Observer State Strategy Template Method Visitor

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值