目录
三:六大关系在代码里如何体现
最近学习了设计模式,每个模式都需要先画类图,通过这次学习,又对六大关系有了新的理解。
一:六大关系的强弱
继承>实现>组合>聚合>关联>依赖
二:六大关系的图形表示
继承:
实现:
组合:
聚合:
关联:
依赖:
三:六大关系在代码里如何体现
继承和实现:这两种关系在C#种体现特别直观,如果A类继承了B类,就表为Class A:B,如果B类是个接口,A实现了B,仍表示为A:B,在C#中,一个类只能继承一个父类,但是可以实现多个接口
组合和聚合:组合和聚合说的都是部分和整体的关系,二者的区别在于,组合时,部分无法脱离整体而存在,聚合时部分可以脱离整体而存在。
聚合在代码中的体现:
class A { B b; public A(B b) { this.b = b; } } class B { }
A类聚合了B类,B类在类A中作为成员变量,B类作为一个参数,传到A类的构造函数中。B类可以脱离A类单独而存在。B类没有封装在A类里,客户是可以同时知道A类和B类的。
组合在代码中的体现:
class A { B b; public A() { b = new B(); } } class B { }
A类组合了B类,B类的对象在A类的构造函数中产生,当需要产生一个A类的对象时候,需要先调用B类的构造函数。客户端是看不到B类的,B类被封装在A类里面。A类和B类同生共死。
依赖和关联:依赖和关联表示的是一种使用的关系,A类使用B类。
依赖:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。
//动物依赖水类,水类是动物类中的某个方法 public class Animal { public void Grownup() { Water water = null; } } public class Water { public Water() { } } //水类作为动物类中某个方法的参数或返回值 public class Animal { public Water Grownup(Water water) { return null; } } public class Water { public Water() { } }
关联:关联和依赖的最主要区别就是,类A当中使用了类B,让类B作为类A的全局变量。作用的范围更大,类A和类B就是关联关系。
//水类作为动物类的全局变量 public class Animal { Water water; } public class Water { public Water() { } }
以上就是我对六大关系的总结。