草叶睡蜢

导航

面向对象基础知识-七、对象间的协作与信息交互

七、对象间的协作与信息交互

面向对象的程序在运行时会创建多个对象,这些对象需要相互协作共同实现应用程序的各项功能。
对象协作的本质就是对象间的信息交互,它体现为对象之间的相互访问,如:

  1. 相互存取字段/属性值
  2. 相互调用方法

7.1 对象内部的信息交互

由类内部的字段或属性来完成。

7.2 对象间的信息交互

7.2.1 一对一对象间的信息交互
7.2.1.1 主->从对象消息传递

主对象通过从对象的引用,调用其共有属性/方法传递信息。
image image

7.2.1.2 从->主对象消息传递
  1. 方式一:主对象实时监控从对象的状态,并根据不同的状态进行不同的处理。
    image
  2. 方式二:主对象把自己的引用注入到从对象,从对象回调主对象的共有属性/方法。
7.2.1.3 对象间信息的双向传递

两个对象之间互相拥有对方的引用,实现即时的双向交互和同步。
image image
主对象把自己的引用注入到从对象,从对象回调主对象的共有属性/方法。

7.2.2 一对多的对象间的信息交互
7.2.2.1 信息广播

信息从一个对象发出,多个对象接收(广播)。
实现方法:

  1. 主对象使用一个对象集合保存所有已创建的从对象的引用,进行信息交互时遍历这个对象集合逐个调用从对象的共有属性/方法。
    image
    image
  2. 委托(Delegate)
    主对象定义一个委托,将从对象的方法添加到委托中,调用一次委托变量,遍历包含一个方法引用列表,所有方法依次执行。
    image
  3. 自定义事件(Event)
    主对象定义一个事件,从对象定义处理方法响应主对象的事件(事件驱动)。
    image
7.2.2.2 信息监控

多个对象向一个对象发送信息,一个对象监控多个对象。
image
实现方法:

  1. 利用对象引用回调
    从对象定义一个属性字段引用主对象,从对象通过对象引用调用主对象的属性/方法。
    image
    image
  2. 利用委托回调
    从对象定义一个委托类型的属性字段,主对象在创建从对象时把其自己的共有方法挂接到从对象的此字段上即可。
    image
    image
  3. 自定义事件
    从对象定义一个事件,主对象在创建从对象时将主对象的事件响应方法挂接到从对象的这个事件上即可。
    image
    image
  4. 全局静态字段和方法
    在全局类中定义一个静态的属性字段引用主对象,再定义一个静态方法实现处理逻辑,在从对象中调用全局的静态方法即可。
    image
    提示:构建全局的字段和方法不推荐使用。
7.2.3 多对多的对象间的信息交互

image
多对多的对象之间关系复杂,可改多对多为一对多进行处理:
image

posted on 2021-10-20 11:46  草叶睡蜢  阅读(844)  评论(0编辑  收藏  举报