我设计了三个接口:InfoProvider,InfoConsumer,InfoFilter。InfoProvider有setInfoConsumer()方法,InfoConsumer有receiveInfo()方法,而InfoFilter是InfoConsumer和InfoProvider的结合。
另外,我还设计了一个InfoSource,它是InfoProvider,但它还有另外两个方法:start()和next()。start()方法的语义是源源不断地提供Info,直到最后提供null。next()则是单步提供Info。
然后,我利用Guice的实例绑定来组建这个处理管道。再用一些确定的数据来测试整个管道的功能是否正确。
根据SOA的思想,我为每个InfoProvider/InfoConsumer/InfoFilter组件设计了一些运行时监控功能。在开发时,可以利用这些功能来确定程序的正确性。在运行时,可以得知程序的实时运行信息。
如果某个Filter没有设置InfoConsumer,它可以在标准输出中输出Info。
很像Unix的管道吧?推荐一本书“Software Architecture: Perspectives On an Emerging Discipline” by Mary Shaw & David Garlan,其中提到了Filter-Pipe架构。
没有评论:
发表评论