介绍

外观模式(正面)为子系统中的一组接口提供了一致的接口。该模块定义了一个高级接口,值得更容易地使用这个子系统。

文本

外观模式不仅简化了类中的接口,而且还提供了对接口和调用方的理解。开发人员通常认为外观模式是必需的,它可以封装复杂的操作,并为调用创建一个简单的接口。

Javascript类库中经常使用外观模式,它封装了一些接口以兼容多个浏览器。外观模式允许我们间接调用子系统,以避免由于直接访问子系统而产生不必要的错误。

外观模式的优点是易于使用,而且本身是轻量级的,但也有一个缺陷外观模式,当开发人员连续使用它时,它会有一定的性能问题,因为在每次调用时都检测到该函数的可用性。

以下是一块未经优化的代码,我们使用外观模式通过检测浏览器的功能创建一个跨浏览器的使用方法。

复制代码代码如下所示:

无功addmyevent =功能(EL,EV,FN){

如果(EL。addEventListener){

El.addEventListener(EV,FN,假);

如果(EL。attachevent){ }

El.attachEvent(开+ EV,FN);

{人}

埃尔{开+ EV } = FN;

}

};



另一个简单的例子是,另一个接口是用接口封装的:

复制代码代码如下所示:

无功mobileevent = { {

…

停止:函数(e){

E.preventDefault();

e.stoppropagation();

}

…

};



总结

那么什么时候使用外观模式呢一般说来,它分为三个阶段:

首先,在设计的早期阶段,我们应该有意识地将两个不同的层分开,例如经典的三层结构,并在数据访问层、业务逻辑层、业务逻辑层和表示层之间建立外观门面。

其次,在开发阶段,由于不断的重构和演化,子系统往往变得越来越复杂。添加门面可以提供一个简单的界面来减少它们的依赖性。

第三,在维护一个大的遗留系统时,这个系统可能很难维护,那么使用门面的外观也非常适合,开发一个外观门面系统,为遗留代码设计提供清晰的界面,粗糙而高度复杂,使新系统与门面对象交互。外观和遗留代码的所有复杂交互。

参考:大话设计模式