2019独角兽企业重金招聘Python工程师标准>>>
有一些程序员大概已经忘记了java是面向对象的。
类A和B为了解耦合,只能从A调用B。B中没有A的引用。B从来不直接和A通讯,如果需要,B会把消息放到一个公共的Session中。这种单线联系,看起来好像是搞特务活动的。Session中的消息是有约束的,不然A不知道B放了什么。我在想这个约束是不是也是一种耦合,的确是,但是已经比较松散了。
在设计的分层上,B其实是业务层次的抽象,A负责协调数据和显示数据的逻辑。这样的设计其实是希望将显示部分与业务部分分离开。
这个设计乍一看没有什么问题,但是其实是不好的。中间环节其实是多余的。我们其实可以设计一个良好的接口,就可以避免中间Session的环节。变成A请求B,B有问必答。这样可能更好。必经程序不是搞特务的,没有必要搞那么神秘。反正A已经知道B了,中间环节就略显多余。
还有一个问题,那就是状态共享的问题。这种解耦的情况下,其实A和B的关系还是比较紧密的。那么如果A和B之间没有共享的状态,A就要维护一份B的状态。