Factory Design Pattern
package com.vishwa.base;
public abstract class BaseLogger { public String getMessage(String s){ return "Exception added"+s; } public abstract void log(String message); } --------------------------------------------------------------------- |
package com.vishwa.factory;
import com.vishwa.base.BaseLogger; public abstract class BaseFactory { public abstract BaseLogger getLogger(); } --------------------------------------------------------------------- |
package com.vishwa.factory;
import com.vishwa.base.BaseLogger; import com.vishwa.concrete.ConsoleLogger; public class ConsoleFactory extends BaseFactory { @Override public BaseLogger getLogger() { return new ConsoleLogger(); } } --------------------------------------------------------------------- |
package com.vishwa.factory;
import com.vishwa.base.BaseLogger; import com.vishwa.concrete.FileLogger; public class FileFactory extends BaseFactory { @Override public BaseLogger getLogger() { return new FileLogger(); } } --------------------------------------------------------------------- |
package com.vishwa.concrete;
import com.vishwa.base.BaseLogger; public class ConsoleLogger extends BaseLogger{ @Override public void log(String message) { System.out.println(message); } } --------------------------------------------------------------------- |
package com.vishwa.concrete;
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import com.vishwa.base.BaseLogger; public class FileLogger extends BaseLogger { @Override public void log(String message) { File f = new File ("log.txt"); BufferedWriter output; try { output = new BufferedWriter(new FileWriter(f)); output.write(message); output.close(); } catch (IOException e) { e.printStackTrace(); } } } --------------------------------------------------------------------- |
package com.vishwa.concrete;
import com.vishwa.factory.BaseFactory; import com.vishwa.factory.ConsoleFactory; import com.vishwa.factory.FileFactory; public class Intermediate { public BaseFactory getFactory( String option){ BaseFactory factory ; if("ON".equals(option)){ factory = new FileFactory(); }else factory = new ConsoleFactory(); return factory; } } --------------------------------------------------------------------- |
package com.vishwa.test;
import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import com.vishwa.base.BaseLogger; import com.vishwa.concrete.Intermediate; public class Test { /** * @param args */ public static void main(String[] args) { Properties properties = new Properties(); try { properties.load(new FileInputStream("Logger.properties")); }catch (IOException e){ e.printStackTrace(); } String valueInPropety =(String)properties.get("loginfile");; System.out.println(valueInPropety); BaseLogger logger = new Intermediate().getFactory(valueInPropety). getLogger(); logger.log(logger.getMessage(" Null pointer")); } } --------------------------------------------------------------------- |