zoukankan      html  css  js  c++  java
  • 类与类之间的关系学习总结


    类与类之间的关系,本身对于实现业务开发没有太大的用处。绝大部分码农干到退休也不用了解。

    主要用于解析源码结构,梳理设计意图。

    概览


    类之间可描述的关系大概有下面几种:继承、实现、依赖、关联、聚合、组合关系。
    总览图如下:

    示例



    重点:关注每一种关系的连线都是不一样的。

    • 学习
      <<interface>>,表示学习是一个接口;

    • <<abstract>>,表示人是一个抽象类;

    继承关系(inherit)


    • 继承关系为 is-a的关系;
    • 两个对象之间如果可以用 is-a 来表示,就是继承关系;
      eg: 程序员是人

    表现:用于Interface和Interface之间,或者用于Class和Class之间

    实现关系(Realitization)


    • 类实现接口中定义的方法;

    表现: 用于Interface和Class之间

    关联(association)


    指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。
    依赖、关联、聚合、组合都是关联。依赖是最弱的关联,其次是普通关联,接下来是聚合,组合是最强的关联。
    关联强度: 组合 > 聚合 > 关联 > 依赖

    聚合


    • 整体和个体之间的关系。是has-a的关系
    • 整体和部分可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享
      表现: 如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。
    class A{
        private B b;
        public A(B b){
            this.b = b;
        }
    }
    

    组合


    • 一种contains-a的关系
    • 部分不能脱离整体而存在,整体的生命周期结束也就意味着部分的生命周期结束
      表现:如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。
    class A{
        private B b;
        public A(){
            this.b = new B();
        }
    }
    

    依赖(Dependency)


    • 从字面理解的话,是说一个类用到了另一个类。
    • 这种使用关系是具有偶然性的、临时性的、非常弱的。
      表现:如果A依赖于B,则B体现为局部变量方法的参数、或静态方法的调用。
    class A{
        private B b;
        public setB(B b){
            this.b = b;
        }
    }
    

    在开发过程中,大量的用到了依赖关系。

  • 相关阅读:
    Microsoft To-Do无法同步问题 ke xue上网导致
    学习希尔排序
    查找docker无法启动的原因
    挂载只读分区为可读写
    批量重建索引脚本
    frp nginx 80 端口共用
    vue部署nginx 404
    阿里云服务器,数据库热备、暖备、冷备实战-镜像篇(域环境下配置)
    码农老婆的网店
    Wcf调用方式
  • 原文地址:https://www.cnblogs.com/snifferhu/p/9148020.html
Copyright © 2011-2022 走看看