{"id":13630988,"url":"https://github.com/code4craft/hello-design-pattern","last_synced_at":"2025-07-26T01:10:14.961Z","repository":{"id":12681533,"uuid":"15353643","full_name":"code4craft/hello-design-pattern","owner":"code4craft","description":"Hello world using all 23 kinds of GoF design patterns.","archived":false,"fork":false,"pushed_at":"2018-10-04T13:51:23.000Z","size":286,"stargazers_count":392,"open_issues_count":1,"forks_count":112,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-03-31T05:07:23.015Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code4craft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-21T04:11:51.000Z","updated_at":"2025-03-23T17:59:22.000Z","dependencies_parsed_at":"2022-09-02T06:31:05.146Z","dependency_job_id":null,"html_url":"https://github.com/code4craft/hello-design-pattern","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2Fhello-design-pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2Fhello-design-pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2Fhello-design-pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4craft%2Fhello-design-pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code4craft","download_url":"https://codeload.github.com/code4craft/hello-design-pattern/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601449,"owners_count":20964864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T22:02:05.993Z","updated_at":"2025-04-07T06:13:23.621Z","avatar_url":"https://github.com/code4craft.png","language":"Java","readme":"hello-design-pattern\r\n====================\r\n\r\nHello world using all 23 kinds of GoF design patterns.\r\n\n```java\npublic class Main {\n\n    public static void main(String[] args) throws InstantiationException, IllegalAccessException {\n        //hello=interjection\n        //world=object\n\n        System.out.println(\"We are creational patterns!\");\n\n        System.out.println(\"1. Abstract Factory: \");\n\n        SplitHelloWorldFactory abstractFactory = AbstractFactory.select(AbstractFactory.Type.DesignPattern);\n        HelloWorld abstractFactoryHelloWorld = new SplitHelloWorld(abstractFactory.createHelloWorldInterjection(),\n                abstractFactory.createHelloWorldObject());\n        System.out.println(abstractFactoryHelloWorld.helloWorld());\n\n        System.out.println(\"2. Builder: \");\n        HelloWorld builderHelloWorld = HelloWorldBuilder.builder()\n                .interjection(\"Hello\")\n                .object(\"Builder\").getHelloWorld();\n        System.out.println(builderHelloWorld.helloWorld());\n\n        System.out.println(\"3. Factory Method: \");\n        /**\n         * Difference between \"abstract factory\" and \"factory method\" is the abstracting point:\n         *  1. Abstracting point of abstract factory is factory.\n         *  2. Abstracting point of factory method is generated object.\n         */\n        FactoryMethodHelloWorldFactory factoryMethodHelloWorldFactory = new FactoryMethodHelloWorldFactory();\n        HelloWorld factoryMethodHelloWorld = factoryMethodHelloWorldFactory.createHelloWorld();\n        System.out.println(factoryMethodHelloWorld.helloWorld());\n\n        System.out.println(\"4. Prototype: \");\n        HelloWorld prototypeHelloWorld = HelloWorldPrototype.PROTOTYPE.clone();\n        System.out.println(prototypeHelloWorld.helloWorld());\n\n        System.out.println(\"5. Singleton: \");\n        HelloWorld singletonHelloWorld = HelloWorldSingleton.instance();\n        System.out.println(singletonHelloWorld.helloWorld());\n\n        System.out.println(\"====================================\");\n        System.out.println(\"We are structural patterns!\");\n\n        System.out.println(\"6. Adapter: \");\n        HelloWorld adapterHelloWorld = new HelloWorldAdapter(new HelloAdapterDesignPattern());\n        System.out.println(adapterHelloWorld.helloWorld());\n\n        System.out.println(\"7. Bridge: \");\n        HelloWorld bridgeHelloWorld = new HelloWorldBridge(new DesignPatternWorldImpl());\n        //leave bridgeHelloWorld' output to compositeHelloWorld\n\n        System.out.println(\"8. Composite: \");\n        HelloWorld compositeHelloWorld = new CompositeHelloWorld(bridgeHelloWorld, new CompositeHelloWorld.DefaultHelloWorld());\n        System.out.println(compositeHelloWorld.helloWorld());\n\n        System.out.println(\"9. Decorator: \");\n        HelloWorldDecorator decoratorHelloWorld = new HelloWorldDecorator(new HelloWorldDecorator.DefaultHelloWorld());\n        System.out.println(decoratorHelloWorld.helloDecorator());\n\n        System.out.println(\"10. Facade: \");\n        HelloWorld facadeHelloWorld = HelloWorldFacade.instance().facadeHelloWorld();\n        System.out.println(facadeHelloWorld.helloWorld());\n\n        System.out.println(\"11. Flyweight: \");\n        HelloWorld flyWeightHelloWorld = HelloWorldFlyWeightFactory.instance().createHelloWorld(\"Hello Flyweight!\");\n        System.out.println(flyWeightHelloWorld.helloWorld());\n\n        System.out.println(\"12. Proxy: \");\n        HelloWorld proxyHelloWorld = new HelloWorldProxy(new HelloWorldProxy.DefaultHelloWorld());\n        System.out.println(proxyHelloWorld.helloWorld());\n\n        System.out.println(\"====================================\");\n        System.out.println(\"We are behavioral patterns!\");\n\n        System.out.println(\"13. Chain of Responsibility: \");\n        HelloWorldHandler helloWorldChainOfResponsibility = new HelloWorldInterjectionHandler().setNext(new HelloWorldObjectHandler());\n        System.out.println(helloWorldChainOfResponsibility.helloWorld());\n\n        System.out.println(\"14. Command: \");\n        Command helloWorldCommand = new HelloWorldPrintCommand();\n        helloWorldCommand.execute();\n\n        System.out.println(\"15. Interpreter: \");\n        HelloWorldInterpreter helloWorldInterpreter = new HelloWorldInterpreter();\n        helloWorldInterpreter.interpret(\"println('Hello Interpreter!')\");\n\n        System.out.println(\"16. Iterator: \");\n        HelloWorldCharacterIterator helloWorldCharacterIterator = new HelloWorldCharacterIterator(\"Hello Iterator!\".toCharArray());\n        while (helloWorldCharacterIterator.hasNext()) {\n            System.out.print(helloWorldCharacterIterator.next());\n        }\n        System.out.println();\n\n        System.out.println(\"17. Mediator: \");\n        HelloWorldInterjection helloWorldInterjection = new HelloWorldInterjection();\n        HelloWorldObject helloWorldObject = new HelloWorldObject();\n        HelloWorldMediator helloWorldMediator = new HelloWorldMediator(helloWorldInterjection, helloWorldObject);\n        helloWorldInterjection.setHelloWorldMediator(helloWorldMediator);\n        helloWorldObject.setHelloWorldMediator(helloWorldMediator);\n        System.out.println(helloWorldObject.helloWorld());\n\n        System.out.println(\"18. Memento: \");\n        HelloWorldMementoOriginator helloWorldMementoOriginator = new HelloWorldMementoOriginator();\n        HelloWorldMementoOriginator.Memento memento = helloWorldMementoOriginator.set(\"Hello Memento!\").saveToMemento();\n        helloWorldMementoOriginator.set(\"Hello Whatever!\");\n        helloWorldMementoOriginator.restoreFromMemento(memento);\n        System.out.println(helloWorldMementoOriginator.helloWorld());\n\n        System.out.println(\"19. Observer: \");\n        Subject subject = new Subject().attach(new HelloWorldObserver());\n        subject.notifyObservers();\n\n        System.out.println(\"20. State: \");\n        HelloWorldStateContext helloWorldStateContext = new HelloWorldStateContext();\n        HelloWorld stateHelloWorld = helloWorldStateContext.appendWord(\"Hello\").appendWord(\"State\");\n        System.out.println(stateHelloWorld.helloWorld());\n\n        System.out.println(\"21. Strategy: \");\n        HelloWorldStrategyContext helloWorldStrategyContext = new HelloWorldStrategyContext(new DesignPatternHelloWorldStrategy());\n        System.out.println(helloWorldStrategyContext.helloWorld());\n\n        System.out.println(\"22. Template Method: \");\n        HelloWorld templateMethodHelloWorld = new TemplateMethodHelloWorld();\n        System.out.println(templateMethodHelloWorld.helloWorld());\n\n        System.out.println(\"23. Visitor: \");\n        HelloWorldCharacterElements helloWorldCharacterElements = new HelloWorldCharacterElements(\"Hello Visitor!\".toCharArray());\n        HelloWorldCharacterVisitor helloWorldCharacterVisitor = new HelloWorldCharacterVisitor();\n        helloWorldCharacterElements.accept(helloWorldCharacterVisitor);\n        System.out.println(helloWorldCharacterVisitor.helloWorld());\n\n    }\n}\n```","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4craft%2Fhello-design-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode4craft%2Fhello-design-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4craft%2Fhello-design-pattern/lists"}