一种分层门面(FACADE)设计实现
FACADE这种设计模式本身比较简单,核心思想就是外部系统同本系统的需要通过门面来进行通信,这样可以屏蔽业务细节,不管系统内部如何变化,怎么复杂,但是对外系统呈现一个简单的结构。
对于软件模块采用消息通行机制的分布式系统,通常的架构设计为底层平台开放模块消息处理的注册接口,各个模块将自己的消息处理函数进行注册,我们可以把这个消息入口看成子系统的一个门面,所有的发往某个模块的消息都通过注册的消息处理函数来入口
void ModuleMsgFun()
{
switch(sendModule)
{
case module1:
TODO...
....
case modulen:
TODO...
}
}
这个ModuleMsgFun门面是子系统和外界唯一的桥梁,简单的把不同的系统联系起来。但如果一个子系统比较庞大,那么它处理的消息可能也会很多,不同类型的消息聚集在一起,导致流程不够清晰,不易于代码的理解,维护和扩展。
为了解决这些问题,我们可以考虑在系统内部再派生几个门面,不同的门面要针对业务强相关,比如系统主流程可以使用一个门面,这样我们可以很容易的通过不同的门面识别不同业务的核心流程,代码也易于理解和维护。
void ModuleMsgFun()
{
ModuleMsgFacadem1();
....
ModuleMsgFacademn();
}
设计虽然简单但对于后期的扩展和维护工作来说效果是十分明显的,它意味着我们不用在代码中每条消息的跟踪去跟踪一个主流程,我们只需要在主流程的门面中去看看就明白了来龙去脉。
http://www.cnblogs.com/chencheng/archive/2012/06/19/2555406.html