场景
-
在使用
C/C++
开发界面时,在两个界面通讯我们之前通过 观察者模式在项目中实际使用例子 来进行数据传输,而不是通过互相引用的方式进行数据传输,互相引用的最大缺点就是耦合严重。 -
而在使用
Object-c
开发Cocoa
界面时,也会出现这种情况,就是界面间如何通讯?Object-c
只支持单继承,不支持多重继承,我们创建界面只能继承NSView
,而不能再继承另外一个类,如何做? -
Object-c
不支持多重继承,使用协议可以做到吗?协议只能声明接口函数,而不能声明属性,实现协议的类都必须重新实现一遍协议声明的函数,非常麻烦,不能重用。
说明
-
要实现目标对象,方法1是写一个子类
MyView
,并且这个子类继承NSView
,并且在这个子类里添加Subject
类的接口函数。这种方法的缺点就是如果窗口对象是NSButton
类型,那么还要实现一个MyButton
来作为Subject
对象,所以这种方法不合适。 -
第二种方式就是使用组合模式,自定义一个