public class factory {public factory() { } letter letter() { return new letter(); } envelope envelope() { return new envelope(); } };
factory
public class envelope {letter impl; public envelope() { factory f = new factory(); impl = f.letter(); // obtained from factory } public void message() { impl.message(); } };
envelope