二、依赖。一个类中的某些功能(方法)依赖于另一个类
代码可以表示为:
Class A;
Class B
{
void Do()
{ //可能存在的B类处理代码
B.Do();//调用B中的方法,来完成A类的功能
//可能存在的B类处理代码
}
}
从上面的代码很容易就能看出,B依赖于A。我的疑问:有没有这样的情况:A依赖于B,B依赖于A(我猜这种情况是成立的)
看图→
三、关联。 这个感觉容易和依赖混淆。先了解关联后,再来讲他们的却别:
先用代码来表示:
class A;
class B
{
A a1=new A1();
a1.Do();//A类的方法,即 在B类中可以反问使用A的可访问元素
//或者,如下:
privite A test_Property;//A作为B的一个属性
}
区分依赖和关联: 依赖,一个类中的方法或功能必须依靠另一一个类的方法来完成,即一个类的变化会引起另一个类的变化
关联, 一个类中,知道并可以使用另一个类的课访问元素,常见形式为一个类为属性的形式出现在另一类中
其中,关联又分为单向关联和双向关联。双向就是相互知道彼此
看图→
四、聚合、组合。 首先要明了:聚合与组合是特殊的关联,不然等下你会疑惑怎么关联和聚合如此相似!
然后再来看看聚合和组合聚合的例子→
基本聚合例子:公司和员工的关系,开 了一个新公司,但不一定要招员工,员 工可以单独存在.
组 合聚合例子:当人出生的时候,同 时人就有了心脏,心脏脱离了人就没有意义了.
记忆口诀:(他们的区别主要在于一个是实心菱形,一个事空心菱形)。
聚在一起肯定有空隙,就像聚会时有空位一样,所有事空心 (有聚就有散,所以到头来都是一场‘空’)
为了将空白填满才组合在一起 ,所以组合是实心。
简单点:有聚有散,终为空;先组后和,才结‘实’
看图(这张图是网上下载的,陈程《大话设计模式》中的图) →