很多系统的性能问题,并不是出在所谓的算法不够快,而是出在对象创建得太早、太频繁、太随意。一旦把初始化时机、实例数量、职责边界这三件事处理好,代码往往会同时获得三种收益:启动更轻、运行更稳、后续更好改。
这篇文章用一个非常生活化的交互场景来拆解思路:用户点击登录按钮,页面出现一层半透明遮罩,让用户知道后台正在处理请求。这个遮罩本质上就是一个div节点,但它背后恰好可以把 Lazy Loading、 Singleton、 Bridge 三个模式串起来讲清楚,并且能自然迁移到 ABAP 的世界里。
从一个遮罩开始:为什么创建时机会决定体验与成本
在很多站点里,点击登录会看到背景变暗,这种遮罩的作用类似商场门口的临时围挡:告诉你这里正在施工,请稍等。从前端实现上看,可以粗略假设系统会动态创建一个带 CSS 的div,覆盖整个页面。
关键点在于:遮罩只需要一个,而且只有在用户真的点了登录时才需要它。
这句话里其实藏了两个设计约束:
只需要一个:这是典型的 Singleton 语义真的用到才创建:这是 Lazy Loading 的语义,延迟初始化能避免无谓开销 (