为了账号安全,请及时绑定邮箱和手机立即绑定

设计模式介绍

标签:
设计模式

图片描述

一、设计模式的要素

在软考学习的过程当中,学到了设计模式相关的知识,设计模式一般有以下四个要素。

1.模式名称(Pattern Name)

一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式就增加了设计词汇。设计模式允许在较高的抽象层次上进行设计。基于一个模式词汇表,就可以讨论模式并在编写文档时使用它们。模式名可以帮助人们思考,便于人们与其他人交流设计思想及设计结果。

2.问题(Problem)

描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,可能描述了特定的设计问题,如怎样用对象表示算法等;也可能描述了导致不灵活设计的类或对象结构。

3.解决方案(Solution)

描述了设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

4.效果(Consequences)

描述了模式应用的效果及使用模式应权衡的问题。尽管描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。

二、创建型设计模式

创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。

创建型模式中有两个不断出现的主旋律。第一,它们都将关于该系统使用哪些具体的类的信息封装起来。第二,它们隐藏了这些类的实例是如何被创建和放在一起的。整个系统关于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在为什么被创建,谁创建它,它是怎样被创建的,以及何时创建这些方面给予了很大的灵活性。它们允许使用结构和功能差别很大的“产品”对象配置一个系统。配置可以是静态的(即在编译时指定),也可以是动态的(在运行时指定)。

三、结构性设计模式

结构性模式涉及如何组合类和对象以获得更大的结构。结构性模式采用继承机制来组合接口或实现。结构性对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。

Composite(组合)模式是结构性对象模式的一个实例。它描述了如何构造一个类层次式结构,这一结构由两种类型的对象所对应的类构成。

Flyweight(享元)模式为共享对象定义了一个结构。至少有两个原因要求对象共享:效率和一致性。Flyweight 模式的对象共享机制主要强调对象的空间效率。使用很多对象的应用必须考虑每一个对象的开销。

Facade(外观)模式描述了如何使用单个对象表示整个子系统。模式中的 Facade 用来表示一组对象,Facade 的职责是将消息转发给它所表示的对象。

Bridge(桥接)模式将对象的抽象和其实现分离,从而可以独立地改变它们。

Decorator(装饰器)模式描述了如何动态地为对象添加职责。这一模式采用递归方式组合对象,允许添加任意多的对象职责。
图片描述

四、行为设计模式

行为模式及算法和对象职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂的控制流。它们将用户的注意力从控制流转移到对象间的联系方式上来。

行为类模式使用继承机制在类间分派行为,主要有 Template Method (模板方法)和 Interpreter(解释器)两种模式。

行为对象模式使用对象复核而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。

Observer(观察者)模式定义并保持对象间的依赖关系。典型的 Observer 的例子就是 Smalltalk 中的模型/视图/控制器,其中一旦模型的状态发现变化,模型的所有视图都会得到通知。

其他的行为对象模式常将行为封装在一个对象中并将请求指派给它。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
30
获赞与收藏
154

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消