关于抽象的注意事项

优质
小牛编辑
134浏览
2023-12-01

门面一般没有多少缺陷,但是性能是值得注意的问题。也就是说,需要确定门面在为我们提供实现的同时是否为我们带来了隐性的消耗,如果是这样的话,那么这种消耗是否合理。回到jQuery库,我们都知道 getElementById(’identifier‘)和 $(“#identifier”)都能够被用来借助 ID 查找页面上的一个元素。

然而你是否知道getElementById()拥有更高数量级的速度呢?来瞧瞧这个 jsPerf 的测试,看一看在每一个浏览器级别的结果:http://jsperf.com/getelementbyid-vsjquery-id。当然现在,我们应该牢记在心的是jQuery(和Sizzle-它的的选择器引擎)在幕后对我们的查询(而这返回的是一个jQuery对象,并不是一个DOM节点)做了更大量的优化。

这个特定的门面模式所面临的挑战就是,为了提供一种优雅的接受和转换多种查询类型的选择器功能,就会有在抽象上的隐性成本。用户并不需要访问jQuery.getById("identifier")或者jQuery.getbyClass("identifier")等等方法。那就是说,在性能上权衡已经通过了多年的实践考量,并且带了jQuery的成功,一个实际上为团队工作得很好的门面。

当使用这个模式的时候,尝试了解任何有关性能上面的消耗,要知道它们是否值得以抽象的级别被提供出来调用。