设计模式之初识UML图

C++设计模式之初识UML图

继承

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系

实现

指的是一个class类实现了interface的功能;实现是类与接口之间最常见的关系。

依赖

类A使用到了类B,这种使用的关系是运行时的,临时性的,属于一种弱耦合的关系。但是B类的变化会影响A类。在代码中,依赖存在的三种方式

class Car {
public:
  Car ();
  virtual ~Car ();
  void run();
};

class Driver{
private:
    Car* car;
public:
    Driver(Car car); //构造函数传递依赖
    setCar(Car car); //settter方式传递依赖
    Drive(Car car); //接口声明方式依赖
}
  • 构造函数传递依赖
  • settter方式传递依赖
  • 接口声明方式依赖

关联

关联关系包含了

  • 一般性关联
  • 聚合
  • 组合

三种关联关系

一般关联

关联关系(Association)表现为一个类与另一个类之间的联系,它使得一个类知道另一个类的方法和属性。是一种”has a”的关系。

当类A关联类B的时候,在代码层面表现为类B为类A的一个成员,这样类A就知道了类B的方法和属性。关联是比依赖更强的一种耦合关系,也可以说是比依赖更加具有“依赖性”的一种关系。代码举例如下:

class Car {
public:
  Car ();
  virtual ~Car ();
  void run();
};

class Driver{
private:
    Car car;
public:
    Drive();
}

相比与依赖关系,关联关系的耦合更强了,这是一种稳定的,非临时性的关系,当Driver诞生伊始,Car的实例car就和Driver处于耦合关系。而对于依赖关系来说,随时可以通过参数传递的凡是改变依赖的实例。

聚合关联

聚合关系是一种特殊的关联关系,它表示关联的两个或者多个类之间存在主次关系,一个是整体,一个是部分。同时是一种“拥有”关系。体现的是A对象可以包含B对象,但是B对象和A对象可以独立存在,也就是说生命周期可以不同。例如公司和员工之间就是一种聚合关系。在代码层面,如果A类聚合了B类,那么A类中包含一个B类的成员指针。

组合关联

组合关系是比聚合关系更强的一种耦合关系,它表示的是类之间的主次关系,也表达了主次部分的关系,但更为强调了组成成分的关系,例如人和心脏就是组合关系。若A类是B和C类的组合,那么A、B、C的生命周期必须一致。

猜你喜欢

转载自blog.csdn.net/u013298300/article/details/50782706