设计模式 - 懒加载

Posted IT之心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 懒加载相关的知识,希望对你有一定的参考价值。

类别

其他

意图

懒加载是一种常见的模式用于延迟初始化一个对象,直到需要的时候。 它可以有助于应用的运作效率适当使用。



适用范围

  • 加载对象是昂贵的,或者根本不需要加载对象

主要代码

public class Heavy {

private static final Logger LOGGER = LoggerFactory.getLogger(Heavy.class);

/**
* Constructor
*/

public Heavy() {
LOGGER.info("Creating Heavy ...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
LOGGER.error("Exception caught.", e);
}
LOGGER.info("... Heavy created");
}

}

public class Java8Holder {

private static final Logger LOGGER = LoggerFactory.getLogger(Java8Holder.class);

private Supplier<Heavy> heavy = this::createAndCacheHeavy;

public Java8Holder() {
LOGGER.info("Java8Holder created");
}

public Heavy getHeavy() {
return heavy.get();
}

private synchronized Heavy createAndCacheHeavy(){

class HeavyFactory implements Supplier<Heavy>{
private final Heavy heavyInstance = new Heavy();

@Override
public Heavy get() {
return heavyInstance;
}
}

if (!HeavyFactory.class.isInstance(heavy)) {
heavy = new HeavyFactory();
}
return heavy.get();
}
}

使用

    // The most efficient lazy loader utilizing Java 8 features
Java8Holder java8Holder = new Java8Holder();
Heavy next = java8Holder.getHeavy();

引用

  • Pattern Oriented Software Architecture Vol I-V

  • Design patterns implemented in Java


以上是关于设计模式 - 懒加载的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 - 懒加载

面试官:如何用一段代码证明JVM加载类是懒加载模式

重磅消息!如何用一段代码证明JVM加载类是懒加载模式

swift学习第十六天:懒加载和tableView

java 设计模式-单例模式-懒加载

多线程下单例模式:懒加载(延迟加载)和即时加载