【设计模式】词汇表

抽象类(abstract class) 一种主要用来定义接口的类。抽象类中的部分或全部操作被延
迟到其子类中实现。抽象类不能实例化。


抽象耦合(abstract coupling) 若类A维护一个指向抽象类B的引用,则称类A抽象耦合
于B。我们之所以称之为抽象耦合乃是因为A指向的是一个对象的类型,而不是一个具体对
象。


抽象操作(abstract operation) 一种声明了型构( s i g n a t u r e)而没有实现的操作。在
C + +中,抽象操作对应于纯虚成员函数。


相识关系(acquaintance relationship) 如果一个类指向另一个类,则这两个类之间有相
识关系。


聚合对象(aggregate object) 一种包含子对象的对象。这些子对象称为聚合对象的部分,
而聚合对象对它们负责。


聚合关系(aggregation relationship) 聚合对象与其部分之间的关系。类为其对象(例
如,聚合对象)定义这种关系。例如容器类和元素类的关系。而容器中的内部节点类则和容器类为“组合关系”。


黑箱复用(black-box reuse) 一种基于对象组合的复用方式。这些被组合的对象之间并
不开放各自的内部细节,因此被比作“黑箱”。


类(c l a s s) 类定义对象的接口和实现。它规定对象的内部表示,定义对象可实施的操作。
类图(class diagram) 类图描述类及其内部结构和操作,以及类间的静态关系。


类操作(class operation) 以类而不是单独的对象为目标的操作。在C + +中,类操作称
为静态成员函数。


具体类(concrete class) 不含抽象操作的类。它可以实例化。


构造器(c o n s t r u c t o r) 在C + +中,一种系统自动调用的用来初始化新对象实例的操作。
耦合(c o u p l i n g) 软件构件之间相互依赖的程度。


委托(d e l e g a t i o n) 一种实现机制,即一个对象把发给它的请求转发/委托给另一个对象。
而受托对象将代表原对象执行请求的操作。


设计模式(design pattern) 设计模式针对面相对象系统中重复出现的设计问题,提出一
个通用的设计方案,并予以系统化的命名和动机解释。它描述了问题、解决方案、在什么条
件下使用该解决方案及其效果。它还给出了实现要点和实例。该解决方案是解决该问题的一
组精心安排的通用的类和对象,再经定制和实现就可用来解决特定上下文中的问题。


析构器(d e s t r u c t o r) 在C + +中,一种系统自动调用的用来清理( f i n a l i z e)即将被删除
的对象的操作。


动态绑定(dynamic binding) 在运行时刻才将一个请求与一个对象及其一个操作关联起
来。在C + +中,只有虚函数可动态绑定。


封装(e n c a p s u l a t i o n) 其结果是将对象的表示和实现隐藏起来。在对象之外,看不到其
内部表示,也不能直接对其进行访问。操作( o p e r a t i o n)是访问和修改对象表示的唯一途径。


框架(f r a m e w o r k) 一组相互协作的类,形成某类软件的一个可复用设计。框架将设计
划分为一组抽象类,并定义它们各自的责任及相互之间的合作,以此来指导体系结构级的设
计。开发者通过继承框架中的类和组合其实例来定制该框架以生成特定的应用。


友类(friend class) 在C + +中,A为B的友类是指A对B中的操作和数据有与B本身一样
的访问权限。


继承(i n h e r i t a n c e) 两个实体间的一种关系,其中一实体乃是基于另一实体而定义的。
类继承以一个或多个父类为基础定义一个新类,这个新类继承了其父类的接口和实现,被称
为子类( C + +)或派生类。类继承包含了接口继承和实现继承。接口继承以一个或多个已有
接口为基础定义新的接口;实现继承以一个或多个已有实现为基础定义新的实现。


实例变量(instance variable) 定义部分对象表示的数据。C + +中使用的术语是数据成
员。


交互图(interaction diagram) 展示对象间请求流程的一种示意图。


接口(i n t e r f a c e) 一个对象所有操作定义的型构的集合。接口刻划了一个对象可响应的
请求的集合。


元类(m e t a c l a s s) 在S m a l l t a l k中,类也是对象。元类是类对象的类。
混入类(mixin class) 一种被设计为通过继承与其他类结合的类。混入类通常是抽象
类。


对象(o b j e c t) 一个封装了数据及作用于这些数据的操作的运行实体。


对象组合(object composition) 组装和组合一组对象以获得更复杂的行为。


对象图(object diagram) 描述运行时刻特定对象结构的示意图。


对象引用(object reference) 用于标识另一对象的一个值。


操作(o p e r a t i o n) 对象的数据仅能由其自身的操作来存取。对象受到请求时执行操作。
在C + +中,操作称为成员函数,而S m a l l t a l k使用术语“ 方法”。


重定义(o v e r r i d i n g) 在一个子类中重定义(从父类继承下来的)操作。


参数化类型(parameterized type) 一种含有未确定成分类型的类型。在使用时,将未确
定类型处理成参数。在C + +中,参数化类型称为模板(t e m p l a t e)。


父类(parent class) 被其他类继承的类。S m a l l t a l k又称之为超类(s u p e r c l a s s),C + +中
又称之为基类(base class),有时又称为祖先类(ancestor class)。


多态(p o l y m o r p h i s m) 在运行时刻接口匹配的对象能互相替换的能力。


私有继承(private inheritance) 在C + +中,一种仅出于实现目的的继承。


协议(p r o t o c o l) 接口概念的扩展,包含指明可允许的请求序列。


接收者(r e c e i v e r) 一个请求的目标对象。


请求(r e q u e s t) 一个对象当受到其他对象的请求时执行相应的操作。通常请求又称为消
息。


型构(s i g n a t u r e) 一个操作的型构定义了它的名称、参数和返回值。


子类(s u b c l a s s) 继承了另一个类的类。在C + +中,子类又称为派生类(derived class)。


子系统(s u b s y s t e m) 一组相互协作的类形成的一个相对独立的部分,完成一定的功能。


子类型(s u b t y p e) 如果一个类型的接口包含另一类型的接口,则前一类型称为后一类型的子类型。


超类型(s u p e r t y p e) 为其他类型继承的父类型。


工具箱(t o o l k i t) 一组提供实用功能的类,但它们并不包含任何具体应用的设计。


类型(t y p e) 一个特定接口的名称。


白箱复用(white-box reuse) 一种基于类继承的复用。子类复用父类的接口和实现,但
它也可能存取其父类的其他私有部分。

1 设计模式 面向对象程序由对象组成,对象包括数据和对数据进行操作的过程,过程通常成为方法或操作。对象在收到客户的请求(或消息)后,执行相应的操作。 客户请求是使对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法。由于这些限制,对象的内部状态是被封装的,它不能直接被访问,它的表示对于对象外部是不可见的。 面向对象设计最困难的部分是将系统分解为对象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等,她们都影响着系统的分解,而且这些因素通常还是相互冲突的。 如何决定对象的粒度,可以使用设计模式中的Façade,Flyweight等模式来完成。 对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构(signature)。对象操作所定义的所有操作型构的集合被成为该对象的接口(interface)。 在面向对象系统中,接口是基本的组成部分。对象只有通过它们的接口才能与外部交流。 发送给对象的请求和它的相应操作在运行时刻的连接就称为动态绑定(dynamic binding),反之发生在编译时刻的连接,称之为静态绑定(static binding)。 动态绑定允许你在运行时刻替换具有相同接口的对象,这种可替代性就称为多态(polymorphism)。 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说就是,允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数(Virtual Function) 实现的。 因此,(运行时)动态绑定,是多态的基础。这也是面向对象软件开发中延迟加载和接触耦合的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值