javascript设计模式外观模式的原理和使用方法

本文介绍了javascript设计模式外观模式的原理和使用方法。与您分享,供您参考,如下所示:

简介:外观模式是一种常用的结构设计模式。引入了外观角色,简化了客户端与子系统的交互,为复杂的子系统调用提供了统一的入口,隐藏了系统的复杂性。度,减少子系统与客户端的耦合。

定义:为子系统中的一组接口提供统一入口。外观模式定义了一个高级接口,使该子系统更易于使用。

场景:我们画一个圆来介绍外观模式。

var Rectangle = function(){

this.draw = function(){

console.log(‘画一个矩形’);

}

}

var Circle = function(){

this.draw = function(){

console.log(‘画一个圆’);

}

}

var Triangle = function(){

this.draw = function(){

console.log(‘画一个三角形’);

}

}

var ShapeMaker = function(){

this.rectangle = new Rectangle();

this.circle = new Circle();

this.triangle = new Triangle();

this.drawRectangle = function(){

this.rectangle.draw();

}

this.drawCircle = function(){

this.circle.draw();

}

this.drawTriangle = function(){

this.triangle.draw();

}

}

var shapeMaker = new ShapeMaker();

shapeMaker.drawRectangle(); //画一个矩形

shapeMaker.drawCircle(); //画一个圆

shapeMaker.drawTriangle(); //画一个三角形

是不是豁然开朗?其实我们日常最常用的就是外观模式。我们的工具类,jquery,包括一些浏览器兼容,我们都会把他们封装到一个对象里。

这就是外观模式提倡的把复杂的操作封装到一个简单接口中。几乎所有的涉及多个业务对象交互的场景都可以考虑使用外观模式进行重构。

外观模式总结:

优点:

* 对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并且提升使用便捷度。

* 实现了客户端与子系统之间的松耦合关系,这使得子系统的变化不会影响客户端。

缺点:

* 不能姮好的限制客户端直接使用子系统类

* 如果设计不当,增加新的子系统可能需要修改外观类的源代码,违背了开关原则

适用场景:

* 需要对一个复杂子系统提供一个简单入口时可以采用外观模式

标签

发表评论