Unlike ResourceAcquisitionIsInitialization, LoadOnDemand defers the creation of a costly resource to a point in time when that resource is actually needed. Often, that point in time is ''never'', which is a quite substantial improvement. Common implementations use a flag (bool loaded, bool opened, etc.), or create an empty envelope that fills itself when it's opened (yeah, the metaphor is lacking there). ---- Is this analogous to DeferredInstantiation? -- DrewMarsh ''No, it's more special in that it implies a ''costly resource''. DeferredConstruction is a way to implement LoadOnDemand, but DeferredInstantiation covers more cases, like when you need to supply some data to open a resource (like some resource identifier, which is needed to access the resource).'' ---- Is this like LazyObject? -- ErikMeade