结构性模式--处理类与对象的组合
作者总结了七个结构型模式,这些模式的例子可以在工具、住宅配线、数学、节日传统、零售目录和银行业中找到。
适配器(Adapter)举例
适配器模式允许将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。扳手提供了一个适配器的例子。一个孔套在棘齿上,棘齿的每个边的尺寸是相同的。在美国典型的边长为 1/2’’和1/4’’。显然,如果不使用一个适配器的话,1/2’’的棘齿不能适合 1/4’’的孔。一个1/2’’至 1/4’’ 的适配器具有一个1/2’’的阴槽来套上一个1/2’’的齿,同时有一个1/4的阳槽来卡入1/4’’的扳手。
图 6:使用扳手适配器例子的适配器对象图
桥接(Bridge)举例
桥接模式将抽象部分与它的实现分离,使它们能够独立地变化。一个普通的开关控制的电灯、电风扇等等,都是桥接的例子。开关的目的是将设备打开或关闭。实际的开关可以是简单的双刀拉链开关,也可以是调光开关。
图 7:使用电子开关例子的桥接对象图
组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。让用户一致地使用单个对象和组合对象。虽然例子抽象一些,但是算术表达式确实是组合的例子。算术表达式包括操作数、操作符和另一个操作数。操作数可以是数字,也可以是另一个表达式。这样,2+3和(2+3)+(4*6)都是合法的表达式。
图 8:使用算术表达式例子的组合模式对象图
装饰(Decorator)举例
装饰模式动态地给一个对象添加额外的职责。不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;这时画、玻璃和画框形成了一个物体。
图 9:使用有画框的画作为例子的装饰模式对象图
外观(Facade)举例
外观模式为子系统中的接口定义了一个统一的更高层次的界面,以便于使用。当消费者按照目录采购时,则体现了一个外观模式。消费者拨打一个号码与客服代表联系,客服代表则扮演了这个“外观”,他包含了与订货部、收银部和送货部的接口。
享元(Flyweight)举例
享元模式使用共享技术有效地支持大量细粒度的对象。公共交换电话网(PSTN)是享元的一个例子。有一些资源例如拨号音发生器、振铃发生器和拨号接收器是必须由所有用户共享的。当一个用户拿起听筒打电话时,他不需要知道使用了多少资源。对于用户而言所有的事情就是有拨号音,拨打号码,拨通电话。
图11:使用拨号音发生器例子的享元模式对象图
代理(Proxy)模式
代理模式提供一个中介以控制对这个对象的访问。一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。
图 12:使用银行存单例子的代理模式对象图
分享到:
相关推荐
这些例子说明,软件设计模式不仅限于软件领域,它们可以从现实世界中找到对应的现象和应用。通过理解这些模式,开发者可以更好地运用到软件开发中,提高代码的灵活性和复用性。在实践中,这些模式可以帮助开发者避免...
这里我们将深入探讨基于Java的软件设计模式,通过基本例子和笔记总结来理解它们的核心概念。 1. 工厂模式:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露实例化过程。在Java中,我们...
【软件设计模式】是软件开发中的重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式是为了解决在软件设计中遇到的一般问题而提出的解决方案,它并不直接解决编程中的具体...
MVC(Model-View-Controller)设计模式是一种广泛应用于软件开发,尤其是Web应用程序中的架构模式。它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以此来实现业务逻辑、用户...
在软件开发领域,设计模式和体系结构是至关重要的概念,它们是构建可扩展、可维护且高效软件系统的基础。设计模式是一种在特定情况下解决常见问题的标准化解决方案,而体系结构则是软件系统的整体构造和组织方式。这...
上篇:软件设计模式例子代码 【例2.2】简单工厂方法模式-汽车保险 【例2.3】工厂方法模式-汽车保险 【例2.4】抽象工厂模式-房屋信息 【例2.5】生成器模式-房屋信息 【例2.6】单例模式-互联网连接 ...
总结来说,"刘伟设计模式和例子"是一份宝贵的资源,涵盖了软件设计的核心——设计模式。通过深入学习和理解这些模式,并结合具体的示例,开发者能够提升自己的编程技能,更好地应对各种软件设计问题。无论你是初学者...
根据提供的信息,我们可以看出这是一本关于设计模式的书籍,旨在通过生动的例子来解释各种设计模式的概念、用途及实现方式。接下来,我们将详细介绍书中部分章节的设计模式知识点。 ### 第1章:策略模式(Strategy ...
### 软件体系结构与设计模式复习指南 #### 一、软件体系结构概述 **软件体系结构**是指具有一定形式的结构化元素的集合,主要包括处理构件、数据构件和连接构件。这些元素构成了软件的基本框架。 1. **处理构件**...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。"设计模式可复用面向对象软件的基础"这一主题强调了设计模式在创建可维护、可扩展的面向对象软件中的核心作用。源码实现则为我们...
《软件设计模式——深入解析与应用》 软件设计模式,是软件工程中的一种最佳实践,是针对特定问题的解决策略,被广泛应用于软件开发中,以提高代码的可读性、可维护性和可复用性。吉林大学的这门课程通过实例代码、...
创建型设计模式是软件设计模式中的重要类别,主要关注对象的创建方式,旨在将对象的创建过程抽象化,使得系统在不指定具体类的情况下能够创建符合特定接口的对象。这一类模式通常包括工厂方法模式、抽象工厂模式、...
Java设计模式是软件开发中的一种重要思想,它总结了在解决特定问题时代码组织和复用的优秀实践。代理模式是这些模式中的一种,它的主要作用是在不改变原有对象行为的前提下,为对象添加额外的功能或者控制访问。在这...
设计模式是软件开发中的一种重要概念,它是经过时间验证并被广泛接受的解决方案模板,...同时,设计模式也反映了面向对象设计的原则,如单一职责原则、开闭原则、里氏替换原则等,这些都是软件设计中的重要指导思想。
这个吉林大学的SDP02-06例子代码很可能是为了教学目的,帮助学生理解和应用设计模式。下面,我们将深入探讨设计模式的核心概念以及可能包含在这个压缩包中的具体模式。 设计模式不是具体的代码或库,而是一套通用的...
原型模式(Prototype Pattern)是软件设计模式中的一种结构型模式,它的主要目的是通过复制已有对象来创建新对象,从而减少创建新对象的成本。在原型模式中,类的实例化过程被替换为对已有实例的克隆操作,尤其适用...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中遇到的常见问题。这个压缩包文件名为“23种设计模式示例源码”,暗示其中包含了解决23种经典设计模式的具体实现代码,这对于初学者或者希望深入理解...
设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码更易于理解、维护和扩展。这两本书对于Java开发者来说尤其宝贵,因为它们不仅介绍了设计模式的概念,还提供...
软件设计模式与软件标准体系结构实验报告 本实验报告旨在介绍软件设计模式和软件标准体系结构的概念,并通过实践实验对软件设计模式和软件标准体系结构的应用进行了探索和研究。实验报告涵盖了软件设计模式和软件...
吉林大学软件设计模式SDP03-03例子代码