- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
包容和聚合
对象和对象可以只是一个服务器与客户的关系。
对象的创建和释放完全在对象内部进行。对象构造时,同时创建对象的接口指针,以便自阿对象的成员函数中使用;当对象被释放时,它先释放对象,这样可以完成对象对对象的篏套使用,形成包容。要对其优化,便可在对象需要时创建对象,在不需要时释放对象。
聚合:
对象要实现两个接口和,而对象实现了接口,并且不要对此接口进行修改便可满足对象的要求。如果采用包容模型,那么对象要实现两个接口,并且在接口的成员函数中调用对象的相应函数,采用聚合则不一样。对象本生不实现接口,他只实现接口,但它也能提供接口的功能,当对象的客户请求接口时,对象把对象的接口暴露给客户,因此,客户调用是直接与对象进行交互的,而客户知道的只是对象。
包容和聚合
包容和聚合
包容实现
内部对象实现了接口,外部对象要实现接口和,其接口如下定义:
{
:
();
};
{
:
();
};
在客户程序、组件对象和组件对象三者之中,包容,客户程序只知道对象的存在,实际上对象是对象的客户,负责对象的创建、调用和释放等工作。
包容实现
列出其定义如下:
{
:
;
:
();
();
成员函数
();
:
* ;};
因为对象包容对象,所以在对象的成员函数中要调用对象的接口成员函数,因此在对象的定义中加了数据成员,记录对象的接口指针。
包容实现
类的实现:
(){
;
;}
(){
()
();}
(){
(,( * *) )
……}
(){
();}
包容实现
需要对其进行说明如下:
() 在成员函数中,对象创建了包容对象,只要创建成功,则数据成员记录了对象的接口指针;当对象被析构时,通过调用对象的成员释放对象。
() 在对象实现接口的成员函数时,只是调用了对象的相应函数,出的概念在此体现出来。
可以在对象初始化构造时调用成员函数,因此对对象的类厂的成员函数的实现有所不同,其如下:
(){
……
();
()
……
();
(){……}
();
;}
包容实现
当要对接口进行扩展时,可以通过接口继承来实现接口的扩展,在实现新的接口时可以一个包容来重用以前的组件。例如,定义新的接口对接口进行扩展,其定义如下:
{
:
();};
接口可以重用已经实现的接口。实际上新的对象只要实现新加的成员函数即可,而成员函数可以直接调用的成员实现。如果新的对象的类名仍为,则代码如下:
(){
();}
包容实现
在包容模型中,外部对象重用内部对象的接口时,可以是简单的调用关系,也可以在调用内部对象接口成员函数之前或之后加上其它的处理,甚至在某些情况下可以加上一些条件处理,比如下面的情况是有可能的:
(){
(……){……}
{……
();
;}}
总之,包容模型的实质是客户--组件的关系,在实现外部对象时可以灵活使用。
文档评论(0)