我是Java新手,到目前为止阅读文档时,我找不到任何好的方法来编写对象之间的松散耦合.对于我所知道的大多数语言(C,C#,python,JavaScript),我可以将对象管理为具有“信号”(关于某些事情发生/需要的事情的通知)和“插槽”(可以连接到信号和处理通知/做的方法)一些工作).在所有提到的语言中,我可以这样写:
Object1 = new Object1Class();
Object2 = new Object2Class();
Connect( Object1.ItemAdded,Object2.OnItemAdded );
现在,如果object1调用/发出ItemAdded,将调用Object2的OnItemAdded方法.这种松耦合技术通常被称为“代表”,“信号槽”或“控制反转”.
与接口模式相比,所提到的技术不需要将信号分组到某些接口中.只要签名匹配,任何对象的方法都可以连接到任何委托(C Qt甚至通过仅允许部分签名匹配来扩展它).所以我不需要为每个方法/方法组编写额外的接口代码,为未使用的接口方法提供默认实现等.
我在Java中看不到这样的东西:(.也许我看错了方法?
最佳答案
您应该查看java中的Observable和Observer类来实现信号排序行为.主要思想是让观察者在可观察对象发生变化时做一些动作
类是java.util.Observable,你反对它必须发送信号需要扩展.
类是java.util.Observable,你反对它必须发送信号需要扩展.
接口是java.util.Observer,您的观察者类应该实现它以对信号起作用