标签:Class Part 对象 void Object Composition 对类 理解 public
原文链接:http://www.cnblogs.com/PowerDev/archive/2012/02/23/2364265.html对Object Composition的重新理解
Object Composition 就是我们常看到的对象组合, 表示...is a part of 的关系, 组合关系的对象具有相同的生命周期,同生死,共存在, 其比聚合有更强的关联关系.
从代码实现角度: 往往是整体类(Composition Class)将部分类(Part Class)作为私有成员变量, 很显然当整体类对象消亡之时, 作为私有成员的部分类对象随之消亡.
代码实现如下:
public class PartClass
{
public void DoSomeWork()
{
Console.WriteLine("Part Object is doing some works!");
}
}
public class CompositionClass
{
private PartClass partObject; //通过私有成员变量,持有对部分类对象的控制权
public CompositionClass()
{
partObject = new PartClass();
}
public void DoSomeWork()
{
partObject.DoSomeWork();
}
public void DoOtherThings()
{
Console.Write("Composition Object is doing other things!");
}
}
然而,有时候通过继承(Inheritance) 机制也可以达到同样的效果 ,就是从Part Class 再派生一个类,实现如下:
public class DerivedClass : PartClass
{
public void DoOtherThing()
{
Console.WriteLine("Do Other things");
}
}
那么通过派生类对象来使用Part Class对象的方法属性,似乎也可以达到和组合相同的效果,那为什么GOF要推荐Object Composition的做法呢?
(注:OOD的第二个原则是: Favor Object Composition over class inheritance)
未完待续....
转载于:https://www.cnblogs.com/PowerDev/archive/2012/02/23/2364265.html
标签:Class,Part,对象,void,Object,Composition,对类,理解,public 来源: https://blog.csdn.net/weixin_30485379/article/details/98340372
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。