【发布时间】:2015-04-15 03:30:12
【问题描述】:
我有一个这样的项目:
User
Interface
Interface Handler
Main
Network Handler
Networks
Elements Handler
Elements
接口是 gui,主要是显而易见的,网络是元素的包装器并定义它们的交互,元素是最小的组件。这是一个家庭安全/自动化程序,元素是 ZWave 传感器、Android 手机、灯、电视等,网络将它们包装在 ZWave 或 Lights 或 Stations 等逻辑组中(Android 手机,与 IP 网络摄像头一起使用,将声音推送到他们通过 Soundwire 等)。
这就是问题所在 - 深入到项目中,它变得一团糟。我一直在使用这样的想法,即下面的层不能知道上面的层,但上面的层可以知道下面的 1 层(除了什么都不知道的接口)并且只能与上面的层通信,并且只能通过 pubsub 与抽象消息进行通信可能会感兴趣。往下走,我只是使用对象方法调用、对象属性更改等。我是否正确地接近这个?一旦我开始实现复杂的交互,例如当传感器跳闸并且离开警报处于活动状态时,就会发生很多事情:灯全部亮起,监视器切换到运动检测记录,发送带有快照图片的电子邮件等。这些交互变得混乱,我已经转向紧密耦合的事情。当我尝试松散耦合时,我最终实际上是在创造新的语言,以便所有东西都说同一种语言。
一个核心问题是我有截然不同的元素。 ZWave 通过 OpenZWave 说话,android 电台通过 Zoneminder 和/或 soundwire 说话,灯光通过 http 说话等。我是否正确地接近这个?我应该建模一个更好的通用设计模式吗?谢谢。
【问题讨论】:
-
我认为这个帖子更适合Code Review;事实上,它对于这个网站来说太宽泛了。
标签: python design-patterns publish-subscribe