Hello world use all 23 kinds of GoF design patterns.
public class Main { public static void main(String[] args) throws InstantiationException, IllegalAccessException { System.out.println("We are creational patterns!"); SplitHelloWorldFactory splitHelloWorldFactory = AbstractFactory.select(AbstractFactory.Type.DesignPattern); HelloWorld abstractFactoryHelloWorld = new SplitHelloWorld(splitHelloWorldFactory.createHelloWorldSlogan(), splitHelloWorldFactory.createHelloWorldTarget()); System.out.println(abstractFactoryHelloWorld.helloWorld()); HelloWorld builderHelloWorld = HelloWorldBuilder.builder() .slogan("Hello") .target("Builder").getHelloWorld(); System.out.println(builderHelloWorld.helloWorld()); /** * 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. */ FactoryMethodHelloWorldFactory factoryMethodHelloWorldFactory = new FactoryMethodHelloWorldFactory(); HelloWorld factoryMethodHelloWorld = factoryMethodHelloWorldFactory.createHelloWorld(); System.out.println(factoryMethodHelloWorld.helloWorld()); HelloWorld prototypeHelloWorld = HelloWorldPrototype.PROTOTYPE.clone(); System.out.println(prototypeHelloWorld.helloWorld()); HelloWorld singletonHelloWorld = HelloWorldSingleton.instance(); System.out.println(singletonHelloWorld.helloWorld()); System.out.println("We are structural patterns!"); HelloWorld adapterHelloWorld = new HelloWorldAdapter(new HelloAdapterDesignPattern()); System.out.println(adapterHelloWorld.helloWorld()); HelloWorld bridgeHelloWorld = new HelloWorldBridge(new DesignPatternWorldImpl()); //leave bridgeHelloWorld' output to compositeHelloWorld HelloWorld compositeHelloWorld = new CompositeHelloWorld(bridgeHelloWorld, new CompositeHelloWorld.DefaultHelloWorld()); System.out.println(compositeHelloWorld.helloWorld()); HelloWorldDecorator helloWorldDecorator = new HelloWorldDecorator(new HelloWorldDecorator.DefaultHelloWorld()); System.out.println(helloWorldDecorator.helloDecorator()); HelloWorld facadeHelloWorld = HelloWorldFacade.instance().facadeHelloWorld(); System.out.println(facadeHelloWorld.helloWorld()); HelloWorld flyWeightHelloWorld = HelloWorldFlyWeightFactory.instance().createHelloWorld("Hello Flyweight!"); System.out.println(flyWeightHelloWorld.helloWorld()); HelloWorldProxy helloWorldProxy = new HelloWorldProxy(new HelloWorldProxy.DefaultHelloWorld()); System.out.println(helloWorldProxy.helloWorld()); System.out.println("We are behavioral patterns!"); } }