Hello world using all 23 kinds of GoF design patterns.
publicclassMain {publicstaticvoidmain(String[]args)throwsInstantiationException,IllegalAccessException {//hello=interjection//world=objectSystem.out.println("We are creational patterns!");System.out.println("1. Abstract Factory: ");SplitHelloWorldFactoryabstractFactory =AbstractFactory.select(AbstractFactory.Type.DesignPattern);HelloWorldabstractFactoryHelloWorld =newSplitHelloWorld(abstractFactory.createHelloWorldInterjection(),abstractFactory.createHelloWorldObject());System.out.println(abstractFactoryHelloWorld.helloWorld());System.out.println("2. Builder: ");HelloWorldbuilderHelloWorld =HelloWorldBuilder.builder() .interjection("Hello") .object("Builder").getHelloWorld();System.out.println(builderHelloWorld.helloWorld());System.out.println("3. Factory Method: ");/** * Difference between "abstract factory" and "factory method" is the abstracting point: * 1. Abstracting point of abstract factory is factory. * 2. Abstracting point of factory method is generated object. */FactoryMethodHelloWorldFactoryfactoryMethodHelloWorldFactory =newFactoryMethodHelloWorldFactory();HelloWorldfactoryMethodHelloWorld =factoryMethodHelloWorldFactory.createHelloWorld();System.out.println(factoryMethodHelloWorld.helloWorld());System.out.println("4. Prototype: ");HelloWorldprototypeHelloWorld =HelloWorldPrototype.PROTOTYPE.clone();System.out.println(prototypeHelloWorld.helloWorld());System.out.println("5. Singleton: ");HelloWorldsingletonHelloWorld =HelloWorldSingleton.instance();System.out.println(singletonHelloWorld.helloWorld());System.out.println("====================================");System.out.println("We are structural patterns!");System.out.println("6. Adapter: ");HelloWorldadapterHelloWorld =newHelloWorldAdapter(newHelloAdapterDesignPattern());System.out.println(adapterHelloWorld.helloWorld());System.out.println("7. Bridge: ");HelloWorldbridgeHelloWorld =newHelloWorldBridge(newDesignPatternWorldImpl());//leave bridgeHelloWorld' output to compositeHelloWorldSystem.out.println("8. Composite: ");HelloWorldcompositeHelloWorld =newCompositeHelloWorld(bridgeHelloWorld,newCompositeHelloWorld.DefaultHelloWorld());System.out.println(compositeHelloWorld.helloWorld());System.out.println("9. Decorator: ");HelloWorldDecoratordecoratorHelloWorld =newHelloWorldDecorator(newHelloWorldDecorator.DefaultHelloWorld());System.out.println(decoratorHelloWorld.helloDecorator());System.out.println("10. Facade: ");HelloWorldfacadeHelloWorld =HelloWorldFacade.instance().facadeHelloWorld();System.out.println(facadeHelloWorld.helloWorld());System.out.println("11. Flyweight: ");HelloWorldflyWeightHelloWorld =HelloWorldFlyWeightFactory.instance().createHelloWorld("Hello Flyweight!");System.out.println(flyWeightHelloWorld.helloWorld());System.out.println("12. Proxy: ");HelloWorldproxyHelloWorld =newHelloWorldProxy(newHelloWorldProxy.DefaultHelloWorld());System.out.println(proxyHelloWorld.helloWorld());System.out.println("====================================");System.out.println("We are behavioral patterns!");System.out.println("13. Chain of Responsibility: ");HelloWorldHandlerhelloWorldChainOfResponsibility =newHelloWorldInterjectionHandler().setNext(newHelloWorldObjectHandler());System.out.println(helloWorldChainOfResponsibility.helloWorld());System.out.println("14. Command: ");CommandhelloWorldCommand =newHelloWorldPrintCommand();helloWorldCommand.execute();System.out.println("15. Interpreter: ");HelloWorldInterpreterhelloWorldInterpreter =newHelloWorldInterpreter();helloWorldInterpreter.interpret("println('Hello Interpreter!')");System.out.println("16. Iterator: ");HelloWorldCharacterIteratorhelloWorldCharacterIterator =newHelloWorldCharacterIterator("Hello Iterator!".toCharArray());while (helloWorldCharacterIterator.hasNext()) {System.out.print(helloWorldCharacterIterator.next()); }System.out.println();System.out.println("17. Mediator: ");HelloWorldInterjectionhelloWorldInterjection =newHelloWorldInterjection();HelloWorldObjecthelloWorldObject =newHelloWorldObject();HelloWorldMediatorhelloWorldMediator =newHelloWorldMediator(helloWorldInterjection,helloWorldObject);helloWorldInterjection.setHelloWorldMediator(helloWorldMediator);helloWorldObject.setHelloWorldMediator(helloWorldMediator);System.out.println(helloWorldObject.helloWorld());System.out.println("18. Memento: ");HelloWorldMementoOriginatorhelloWorldMementoOriginator =newHelloWorldMementoOriginator();HelloWorldMementoOriginator.Mementomemento =helloWorldMementoOriginator.set("Hello Memento!").saveToMemento();helloWorldMementoOriginator.set("Hello Whatever!");helloWorldMementoOriginator.restoreFromMemento(memento);System.out.println(helloWorldMementoOriginator.helloWorld());System.out.println("19. Observer: ");Subjectsubject =newSubject().attach(newHelloWorldObserver());subject.notifyObservers();System.out.println("20. State: ");HelloWorldStateContexthelloWorldStateContext =newHelloWorldStateContext();HelloWorldstateHelloWorld =helloWorldStateContext.appendWord("Hello").appendWord("State");System.out.println(stateHelloWorld.helloWorld());System.out.println("21. Strategy: ");HelloWorldStrategyContexthelloWorldStrategyContext =newHelloWorldStrategyContext(newDesignPatternHelloWorldStrategy());System.out.println(helloWorldStrategyContext.helloWorld());System.out.println("22. Template Method: ");HelloWorldtemplateMethodHelloWorld =newTemplateMethodHelloWorld();System.out.println(templateMethodHelloWorld.helloWorld());System.out.println("23. Visitor: ");HelloWorldCharacterElementshelloWorldCharacterElements =newHelloWorldCharacterElements("Hello Visitor!".toCharArray());HelloWorldCharacterVisitorhelloWorldCharacterVisitor =newHelloWorldCharacterVisitor();helloWorldCharacterElements.accept(helloWorldCharacterVisitor);System.out.println(helloWorldCharacterVisitor.helloWorld()); }}