1,所谓laying,就是以一个class为本,建立另外一个class.
外层class含有内层class作为其数据成员.
例如:
class Address { ... }; // where someone lives
class PhoneNumber { ... };
class Person
{
public:
...
private:
string name; // layered object
Address address; // ditto
PhoneNumber voiceNumber; // ditto
PhoneNumber faxNumber; // ditto
};
对比public继承"是一种",layering意味着"有一个"或"根据某物实现".
2,应用,利用List实现Set.
template<class T>
class Set
{
public:
bool member(const T& item) const;
void insert(const T& item);
void remove(const T& item);
private:
list<T> rep;
};
template<class T>
bool Set<T>::member(const T& item) const
{
return find(rep.begin(), rep.end(), item) != rep.end();
}
template<class T>
void Set<T>::insert(const T& item) const
{
if(!member(item))
rep.push_back(item);
}
template<class T>
void Set<T>::remove(const T& item) const
{
list<T>::iterator ite = find(rep.begin(), rep.end(), item);
if (ite != rep.end())
rep.erase(ite);
}
注:这里List和Set的关系不是"isa",Set不允许元素重复,而是"根据某物实现"的关系.
3,需要注意的是:当你使用laying技术来模塑两个class之间的关系时,你便在那些class之间产生了一个编译依存关系.
分享到:
相关推荐
DICE Layering Architecture 是 Trusted Computing Group (TCG) 发布的一份技术规范,旨在提供一个统一的架构层次结构,以便更好地实现可信计算环境。该规范的主要目的是确保计算机系统的安全和可靠性,防止恶意攻击...
layering-cache简介layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。使用Caffeine作为一级本地缓存,使用redis作为二级集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两...
即使我们只需要一个位的信息,也需要读取或写入整个扇区。这种扇区地址性(sector-addressability)限制了对硬盘的访问粒度。 硬盘驱动器提供一个硬件接口(API),允许我们读取扇区到主内存,或者用新的数据更新...
layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。它使用Caffeine作为一级本地缓存,redis作为二级集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两种模式相结合的方式来...
### XAML in a Nutshell: An Overview of the XML-Based Markup Language for Windows Presentation Foundation #### Introduction XAML, standing for Extensible Application Markup Language, is an XML-based ...
VoIPDemo is intended as a sample to show how to use the RTC API for Windows CE, but also as a working application for demonstration and use (taking note of the limitations described below). ...
由于这些设备通常需要长时间工作且往往通过可穿戴或植入式技术实现,因此对低功耗和长寿命有着严格的要求。本文着重介绍了如何通过跨层优化的方法来减少WBANs的能耗。 #### 关键词分析与解释 - **无线体域网络...
建筑工程设计信息模型(Building Information Modeling,简称BIM)是建筑行业中一项重要的技术革新,它通过建立一个包含建筑物所有信息的数字化模型来进行建筑设计、施工和管理。BIM技术的应用要求制定相应的制图...
例如,我们可以有一个基础策略类处理基本的数据类型约束,另一个处理时序约束,还有一个处理特定功能的约束。 文件“system verilog constraint layering.pdf”可能详细阐述了如何定义和使用这些策略类,包括如何...
- **实现原理:** 通过设定不同的可见性范围来实现。 **5.11 Generating Labels for a Layer** - **标签生成:** 为图层中的特征添加标签。 - **标签样式:** 可以自定义字体、颜色等。 **5.12 Annotations** - **...
根据提供的文件信息,我们可以深入探讨PCI Express (PCIe) Base Specification Revision 1.0a的主要内容及关键知识点。 ### 标题与描述分析 #### PCIe Spec 1.0a 此文档是关于PCI Express(简称PCIe)1.0a版本的...
Replit.com已经有一个经过编译的jar,可以用它快速绘制图形jar运行命令: kotlin -classpath main.jar MainKt "path to graph file" 示例: kotlin -classpath main.jar MainKt "examples/flow-from-lesson" ...
一个在Flex中显示HTML网页的控件,当然不仅仅只这个,官方网站: http://drumbeatinsight.com/htmlcomponent 控件供述: - Extends the Adobe’s™ UIComponent class (no need to relearn a new system) - ...
本文研究的是狭长通道内火灾烟气层沉降现象,主要通过96米长的全尺寸实验,测量了不同距离火源处的烟气层高度沉降过程。研究团队来自中国科学技术大学火灾科学国家重点实验室,由胡隆华、李元洲以及R. Huo主导。这项...
### 电子海图技术规范详解 #### 一、概述 中华人民共和国国家标准GB15702-1995《电子海图技术规范》是一部重要的技术标准,它规定了电子海图的制作原则、方法以及内容,并明确了电子海图应用系统在使用过程中的...
idle machines into hosts for numerous Docker services.Learn what it takes to build a true container infrastructure that is scalable, reliable, and resilient in the face of increased complexities from ...