• 设计模式-类间关系


    0 类间关系

    类间关系主要分为:继承(泛化)、实现、依赖、关联、聚合、组合

    1 继承(泛化)

    A类继承自B类,那么称为两个类间关系为继承,或是泛化

    class A
    {
    };
    
    class B:A
    {
    };
    

    UML图中,使用空心的三角形箭头,让派生类指向基类。(注意是头部三角形)

    2 实现

    也是一种继承的关系,但是实现指的是继承了一个虚基类(接口类)。

    因此派生类需要实现虚基类的方法(或是仍然作为一个虚基类)。

    class A
    {
    public:
      void say(string&)=0;
    };
    
    class B:A
    {
    public:
    };
    

      

    UML图中,和继承类似,也是使用空心三角型箭头,从派生类指向基类。(注意是头部三角形)

    3 依赖

    一个类A中的方法使用了B类作为参数或是返回值,(没有在A中保存B类的实例)。

    这种关系称为依赖。

    class A
    {
    };
    
    class B
    {
    public:
      A* getA();
      int isHold(A&);
    private:
      A _hold;//如果仅仅是依赖,那么不应该有这个成员变量。
    };
    

      

    UML中,使用虚线加一个箭头,从A类指向B类。(注意,头部是个箭头,不是三角形)

    4 关联

    类A中有一个类B的实例作为数据成员。这种关系称为关联

    class A
    {
    };
    
    class B
    {
    private:
      A *a;
    };
    

      

    在UML图中,使用一个空心菱形,从A指向B。聚合为空心菱形,组合为实心菱形。

    关联又分为聚合组合

    4.1 聚合

    聚合是一种实体的东西,也就是说,类A和类B都可以单独的存在。是一种“弱拥有”。

    聚合中,类B的实例可以在类A实例创建完以后赋值。

    4.2 组合

    组合是一种“强拥有”,类A和类B,类A实例创建的时候类B实例创建,类A实例销毁的时候类B实例也销毁。

    组合中类B的实例是在类A实例创建的时候自动创建的。

  • 相关阅读:
    论信息系统项目沟通管理
    程序员到底怎么了
    Spring DBCP用xml和properties2种格式配置DataSource
    Spring Aop的理解和简单实现
    数据库常见面试题总结
    java常见面试题总结
    【JavaEE】企业面试问题-Java基础
    Java String常见面试题汇总
    JavaScript事件详解
    JavaScript函数使用技巧
  • 原文地址:https://www.cnblogs.com/perfy576/p/8547704.html
Copyright © 2020-2023  润新知