问题描述
我已经阅读了有关六角形图案的Alistair的article,并浏览了与此相关的其他资源(Alistair's videos,Short description of Ports & Adapters)。
我了解六边形体系结构的一般概念及其为现代应用程序开发带来的优势。但是,我仍然对端口和适配器的实际实现感到困惑。
问题1:
摘自Alistair的文章
在一个实现中,端口和适配器以两种形式出现, 出于显而易见的原因,我将其称为主要和次要。 它们也可以称为驱动适配器和驱动适配器。
他将端口分为两类,即驱动端口和从动端口。驱动端口控制应用程序(GUI),驱动端口控制应用程序(数据库)。
因此,如果驱动端口仅应包含控制API,那么驱动端口侧的适配器将如何获取事件通知。例如,在下图中,我有两个驱动适配器,它们控制应用程序,但它也需要来自应用程序的信息才能将其发送回连接到该适配器的其他应用程序。
Interface IDriving {
//control application
startService();
stopService();
//Events send from application
statusInfoEvent();
}
您可以将statusInfoEvent()
视为从应用程序端发出的Qt信号或某些常见的可观察模式。
将传入和传出流量API保持在相同的接口(端口)是否违反了六边形模式?,最重要的是,实现是在六边形中完成的,因为它是一个驱动端口。
问题2:
将服务1的驱动适配器视为某种存储介质,服务1可以向其推送信息或从中提取信息。服务1的这两个适配器(驱动和驱动)都在服务2内实现(至少在项目级别),现在服务2从其驱动适配器(Web或dbus)接收一些数据,并更新服务1驱动的适配器的存储介质,还需要通过驱动适配器将服务1的更新通知。
有可能以更好的方式做到这一点吗?
解决方法
问题1:
驱动适配器开始以六边形开始对话。但这与数据流没有任何关系,即驱动程序端口可以将数据返回到驱动程序适配器。
问题2:
这幅画对我没有任何意义,您能尝试用另一种方式表达它吗?
=========================
如果您想了解更多有关六角形建筑的信息: