{"id":1881,"date":"2016-10-11T13:48:12","date_gmt":"2016-10-11T13:48:12","guid":{"rendered":"http:\/\/codethataint.com\/blog\/?p=1881"},"modified":"2024-09-21T14:13:03","modified_gmt":"2024-09-21T14:13:03","slug":"simple-factory","status":"publish","type":"post","link":"https:\/\/codethataint.com\/blog\/simple-factory\/","title":{"rendered":"Simple Factory"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/codethataint.com\/blog\/wp-content\/uploads\/2024\/09\/SimpleFactoryOverview.png\" alt=\"\" \/><\/p>\n<ol>\n<li>In Simple Factory we have a Factory Class(<strong>LoggerFactory.java<\/strong>) and We call the <strong>createLogger<\/strong> method which returns different implementation of logger<\/li>\n<li>Logger is a abstract class which has different implementations<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/codethataint.com\/blog\/wp-content\/uploads\/2024\/09\/simplefactorymethod.png\" alt=\"\" \/><\/p>\n<p><strong>Logger.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic abstract class Logger {\r\n  abstract void log(String logstring);\r\n}\r\n<\/pre>\n<p><strong>ConsoleLogger.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class ConsoleLogger extends Logger{\r\n    @Override\r\n    void log(String logstring) {\r\n        System.out.println(&quot;Logging to Console - &quot;+ logstring);\r\n    }\r\n}\r\n<\/pre>\n<p><strong>DBLogger.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class DBLogger extends Logger{\r\n    @Override\r\n    void log(String logstring) {\r\n        System.out.println(&quot;Logging to Database - &quot;+ logstring);\r\n    }\r\n}\r\n<\/pre>\n<p><strong>FileLogger.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class FileLogger extends Logger{\r\n    @Override\r\n    void log(String logstring) {\r\n        System.out.println(&quot;Logging to File - &quot;+ logstring);\r\n    }\r\n}\r\n<\/pre>\n<p><strong>LoggerFactory.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class LoggerFactory {\r\n    public enum LoggerType {\r\n        DATABASE, FILE, CONSOLE;\r\n    }\r\n\r\n    \/\/The same code could be written using if else block instead of switch case\r\n    public Logger createLogger(LoggerType loggerType) {\r\n        Logger logger;\r\n\r\n        switch (loggerType) {\r\n            case FILE:\r\n                logger = new FileLogger();\r\n                break;\r\n            case DATABASE:\r\n                logger = new DBLogger();\r\n                break;\r\n            case CONSOLE:\r\n                logger = new ConsoleLogger();\r\n                break;\r\n            default:\r\n                logger = new ConsoleLogger();\r\n                break;\r\n        }\r\n\r\n        return logger;\r\n    }\r\n}\r\n<\/pre>\n<p><strong>ClientApp.java<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class ClientApp {\r\n    public static void main(String&#x5B;] args) {\r\n        LoggerFactory objLoggerFactory = new LoggerFactory();\r\n        Logger logger = objLoggerFactory.createLogger(LoggerFactory.LoggerType.CONSOLE);\r\n        logger.log(&quot;Hello there&quot;);\r\n    }\r\n}\r\n<\/pre>\n<p><strong>Output<\/strong><\/p>\n<pre>\r\nLogging to Console - Hello there\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In Simple Factory we have a Factory Class(LoggerFactory.java) and We call the createLogger method which returns different implementation of logger Logger is a abstract class which has different implementations Logger.java public abstract class Logger { abstract void log(String logstring); } ConsoleLogger.java public class ConsoleLogger extends Logger{ @Override void log(String logstring) { System.out.println(&quot;Logging to Console -&hellip; <a href=\"https:\/\/codethataint.com\/blog\/simple-factory\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[367],"tags":[],"class_list":["post-1881","post","type-post","status-publish","format-standard","hentry","category-simple-factory"],"_links":{"self":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/1881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/comments?post=1881"}],"version-history":[{"count":5,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/1881\/revisions"}],"predecessor-version":[{"id":5175,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/posts\/1881\/revisions\/5175"}],"wp:attachment":[{"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/media?parent=1881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/categories?post=1881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codethataint.com\/blog\/wp-json\/wp\/v2\/tags?post=1881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}