天天看点

软件设计笔记(九)- 面向对象程序设计 - 72.1.5 对象间的协作与信息交换

2.1.5 对象间的协作与信息交换

对象协作的本质就是对象间的信息交换的问题,体现为对象之间的相互访问

相互存取字段/属性

相互调用方法

// 2 主1->从1,对象信息传送
// 通过从的引用,调用从的公有属性、公有方法
           
// 3 从1->主1,对象信息传送
// 3.1 主通过阻塞的办法(比如,模态对话框)获取从结束的消息,然后利用从的引用进行查询
// 3.2 对象注入(主窗体把this传入从窗体,利用interface父类/主窗体类引用访问主窗体重写的方法即回调)
           
// 4 主1->从N,广播
// 4.1 使用对象集合,遍历、分别调用(最简单,主->从的扩展)
// 4.2 委托/事件(c#, 调用一次执行多个方法):在1端定义委托变量,每实例化一个从,就把从的方法挂到这个委托变量上。最终,只需要调用一次委托变量,就可以执行所有挂接的从窗体的方法,这相当于主窗体回调从窗体。
           
// 5 从N->主1,主监控多从
// 5.1 使用回调
// 5.2 使用委托/事件,每个从定义一个委托,主窗体把方法挂上去
// 5.3 使用全局字段和方法,不推荐使用,因为多线程会带来性能损失
           
//  N-N, N^,要保证可扩展性
//  改多对多的关联为对多的关联,构建一个消息中心。(个人觉得可以通过接口来实现)