`

工厂方法简单例子

    博客分类:
  • J2SE
阅读更多
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
  • 大小: 26.1 KB
  • 大小: 28.2 KB
分享到:
评论

相关推荐

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    简单工厂-工厂方法-抽象工厂 对比总结

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

    qt工厂模式例子qt简单工程模式源码

    5. Qt工厂模式例子 6. 简单工厂模式 部分源码实例: // 奔驰工厂 class BenzFactory : public AFactory { public: ICar* CreateCar() { return new BenzCar(); } }; // 宝马工厂 class BmwFactory : public A...

    设计模式之工厂方法、简单工厂、抽象工厂

    简单工厂模式是一种静态工厂方法,它通常包含一个类,该类负责创建其他类的实例。客户端通过调用静态方法获取所需对象,而不必了解具体创建对象的逻辑。虽然简单工厂模式易于理解和实现,但它的缺点在于违反了“开...

    抽象工厂,工厂方法,简单工厂

    在软件设计模式中,"抽象工厂"、"工厂方法"和"简单工厂"都是创建型设计模式,它们都用于封装对象的创建过程,提供了一种间接的途径来创建对象,从而使得代码更加灵活,易于扩展。下面将详细介绍这三个工厂模式。 ##...

    .net简单工厂实例

    .NET框架中的简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。简单工厂模式在实际编程中常用于那些需要频繁创建不同类型的对象,但创建逻辑相对简单的...

    简单工厂模式,工厂方法模式,抽象工厂模式

    在实际项目中,工具类库也经常采用工厂模式,如Apache Commons Lang中的`StringUtils`就是一个简单工厂的例子,它提供了静态方法来创建或处理字符串对象。 总结: 工厂模式是设计模式中的重要成员,它有效地解决了...

    简单工厂和抽象工厂的Demo

    3. 简单工厂类(SimpleFactory):包含创建产品的方法,根据输入条件返回具体产品实例。 4. 抽象工厂接口(AbstractFactory):定义创建产品族的接口。 5. 具体工厂类(ConcreteFactory1, ConcreteFactory2等):...

    一个简单的工厂模式例子

    java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。java工厂模式一个简单的工厂模式例子工厂模式简单代码案例,仅供参考。...

    工厂设计模式简单实例

    在这个名为"工厂设计模式简单实例"的资料中,我们可以期待看到一个基础的工厂模式实现。 工厂模式的核心思想是定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端在使用时无须知道...

    一个简单的工厂模式实例

    工厂模式主要有三种形式:简单工厂模式、工厂方法模式和抽象工厂模式。这里我们将重点讨论简单工厂模式,这也是标题所提及的实例。 简单工厂模式通常包含三个主要角色: 1. **产品接口(Product)**:定义了产品的...

    设计模式——简单工厂 VS 工厂方法

    简单工厂模式,也称为静态工厂模式,是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露实例化逻辑。在简单工厂模式中,一个单一的工厂类负责生产所有相关类型的实例。这种模式适用于产品种类较少且...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    在这个模式中,工厂类通常是静态的,客户端通过调用静态方法来获取对象实例。 - 在`SimpleFactory`文件中,我们可以看到一个简单的工厂类,它根据输入类型创建相应的对象。这种模式适用于对象种类较少且不常变动的...

    动态代理和工厂方法例子

    文件“005_Factory_Series_DesignPattern”可能包含一系列关于工厂方法模式的示例,可能包括简单工厂、工厂方法、抽象工厂等变体。这些例子可以帮助开发者理解如何在不同的场景下选择和使用工厂方法模式。 接下来,...

    抽象方法简单工厂

    简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式主要用于创建属于同一族的特定类型的对象,而这些对象的创建细节可以由子类来决定。在Java等面向对象编程...

    设计模式(简单工厂,工厂,抽象工厂)简单例子.rar

    在给定的压缩包文件中,我们关注的是三种特定的创建型设计模式:简单工厂模式、工厂方法模式以及抽象工厂模式。这三种模式都是关于对象创建的,但它们在灵活性和抽象层次上有所不同。 **简单工厂模式**,又称为静态...

    ASP.NET简单工厂实例

    在ASP.NET应用中,当需要连接数据库时,不再直接实例化数据库连接类,而是通过简单工厂调用`CreateDatabaseConnection`方法: ```csharp var dbConnection = DatabaseConnectionFactory.CreateDatabaseConnection(...

    实例化Spring bean的两种工厂方法

    - **静态工厂方法**则更简洁,无需创建工厂实例,适合简单的对象创建。 5. **总结** 实例化Spring Bean的工厂方法是实现定制化对象创建的一种方式,提供了比直接声明Bean更高的灵活性。开发者可以根据需求选择...

    关于工厂模式的简单例子

    这样,工厂方法就可以将类的实例化推迟到子类中进行,使得代码更加灵活,同时封装了创建对象的过程。 简单工厂模式是工厂模式的一个具体实现,也被称为静态工厂方法模式。在这种模式中,通常由一个静态方法来创建...

    关于简单工厂模式的一个java例子

    在这个例子中,`SimpleFactory`是工厂类,`createProduct`方法接收一个类型参数,然后根据参数返回相应的产品实例。客户端代码只需要调用工厂方法,即可得到所需的产品,而无需了解产品是如何被创建的。 简单工厂...

Global site tag (gtag.js) - Google Analytics