Files
java-design-patterns/lazy-loading/src/main/java/com/iluwatar/lazy/loading/App.java

38 lines
1.1 KiB
Java
Raw Normal View History

package com.iluwatar.lazy.loading;
2015-04-10 20:24:16 +03:00
/**
*
* Lazy loading idiom defers object creation until needed.
* <p>
2015-04-10 20:24:16 +03:00
* This example shows different implementations of the pattern
* with increasing sophistication.
* <p>
2015-04-10 20:24:16 +03:00
* Additional information and lazy loading flavours are described in
* http://martinfowler.com/eaaCatalog/lazyLoad.html
*
*/
public class App
{
/**
* Program entry point
* @param args command line args
*/
2015-04-10 20:24:16 +03:00
public static void main( String[] args ) {
// Simple lazy loader - not thread safe
HolderNaive holderNaive = new HolderNaive();
Heavy heavy = holderNaive.getHeavy();
System.out.println("heavy=" + heavy);
// Thread safe lazy loader, but with heavy synchronization on each access
HolderThreadSafe holderThreadSafe = new HolderThreadSafe();
Heavy another = holderThreadSafe.getHeavy();
System.out.println("another=" + another);
// The most efficient lazy loader utilizing Java 8 features
Java8Holder java8Holder = new Java8Holder();
Heavy next = java8Holder.getHeavy();
System.out.println("next=" + next);
}
}