工厂方法简单例子

package test.factorymethod;

/**
 * 控制台日志
 */
public class ConsoleLogger implements Logger
{

	public void log(String msg) {
		System.out.println(msg);
		
	}
	
}


package test.factorymethod;

/**
 * 文件日志
 */
public class FileLogger implements Logger 
{

	public void log(String msg) {
		
		FileUtil futil = new FileUtil();
		futil.writeToFile("log.txt", msg);
	}

}


package test.factorymethod;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileUtil 
{
	/**
	 * 写文件
	 * @param fileName
	 * @param message
	 */
	public void writeToFile(String fileName,String message)
	{
		try 
		{
			BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
			out.write(message);
			out.close();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		
	}
}



package test.factorymethod;

/**
 * 日志接口
 *
 */
public interface Logger {
	
	/**
	 * 日志方法
	 * @param msg
	 */
	public void log(String msg);
}



package test.factorymethod;

import java.io.IOException;
import java.util.Properties;

/**
 * 日志工厂类
 */
public class LoggerFactory {
	/**
	 * 文件日志是否启用
	 * @return
	 */
	public boolean isFileLoggingEnabled()
	{
		
		Properties p = new Properties();
		try
		{
			p.load(ClassLoader.getSystemResourceAsStream("logger.properties"));
			String fileLoggingValue = p.getProperty("FileLogging");
			if(fileLoggingValue.equalsIgnoreCase("ON")==true)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		catch (IOException e) {
			return false;
		}
	}
	
	/**
	 * 
	 * @return
	 */
	public Logger getLogger()
	{
		if(isFileLoggingEnabled())
		{
			return new FileLogger();
		}
		else
		{
			return new ConsoleLogger();
		}
	}
}



package test.factorymethod;

public class LoggerTest {
	public static void main(String[] args)
	{
		LoggerFactory factory = new LoggerFactory();
		Logger logger = factory.getLogger();
		logger.log("A Message to Log");
	}
}


FileLogging=ON

你可能感兴趣的:(java)