`

简单工厂模式中(选择实现类),配置文件方式

阅读更多
本文转自http://chjavach.iteye.com/blog/834679
简单工厂就是实现创建对象的功能,将创建对象的实现封装起来以供客户端使用,但有时一个接口的实现类有多个,如何选择创建哪个具体实例呢?可以从客户端传入参数,或用配置文件方式,在客户端传入参数中,当增加一个新的具体实例时,就要修改工厂类,以下是用配置文件形式,利用反射机制动态生成类,无需修改工厂类
/**
* 工厂类,用来创造Api对象
*/
public class Factory {
	/**
	 * 具体的创造Api的方法,根据配置文件的参数来创建接口
	 * @return 创造好的Api对象
	 */
	public static Api createApi(){
		//直接读取配置文件来获取需要创建实例的类
		//至于如何读取Properties,还有如何反射这里就不解释了
		Properties p = new Properties(); 
		InputStream in = null;
		try {
			in = Factory.class.getResourceAsStream(
"FactoryTest.properties");
			p.load(in);
		} catch (IOException e) {
			System.out.println(
"装载工厂配置文件出错了,具体的堆栈信息如下:");
			e.printStackTrace();
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//用反射去创建,那些例外处理等完善的工作这里就不做了
		Api api = null;
		try {
			api = (Api)Class.forName(p.getProperty("ImplClass"))
.newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return api;
	}
}
分享到:
评论

相关推荐

    用配置文件和工厂模式访问多种数据库

    本主题将深入探讨如何利用配置文件和工厂模式来实现这一目标。这涉及到三个主要的知识点:配置文件、log4j日志框架以及工厂模式。 首先,配置文件是软件系统中用于存储可变参数或设置的文件。在Java或类似的编程...

    C#工厂模式结合反射+配置文件+外观模式实例

    本实例探讨了如何将工厂模式、反射、配置文件和外观模式这四种概念结合起来,以实现更灵活、可扩展的系统架构。下面将详细阐述这些知识点。 1. **工厂模式**: 工厂模式是一种创建型设计模式,它提供了一种创建...

    设计模式之工厂模式Java实现和类设计图

    本篇将深入探讨工厂模式在Java中的实现以及类设计图的应用。 首先,我们来看简单工厂模式。它是一种静态工厂,通常包含一个静态方法,用于根据输入参数返回所需类型的实例。简单工厂模式的优点在于易于使用,但缺点...

    设计模式-工厂方法模式

    在工厂方法模式中,配置文件可能包含信息,比如哪个工厂类对应哪种类型的产品,通过读取这些信息,工厂类可以使用反射来实例化相应的对象。这种方式使得系统可以适应不断变化的需求,而无需修改代码。 文档部分可能...

    工厂模式:不修改工厂,只增删类对应修改配置文件就OK啦!

    在标题中提到的“不修改工厂,只增删类对应修改配置文件”,这是工厂模式的一种高级应用,即使用配置文件动态地决定创建哪个具体的产品对象。 在实际应用中,我们可能遇到这样的场景:当系统需要创建一系列相关或...

    Java简单工厂模式和传统模式实现对比

    Java简单工厂模式是一种设计模式,它是创建型模式的一种,用于将对象的创建过程封装到一个独立的工厂类中,使得客户端代码无需关心具体的对象创建细节,只需要知道如何调用工厂方法即可得到所需的对象。这种模式在...

    反射简单工厂模式工厂模式

    通过反射,开发者可以在未知类名的情况下实例化对象,这在配置文件驱动的应用程序或插件系统中非常有用。同时,反射也用于实现一些高级功能,如元编程和动态代理。 接下来,我们转向"简单工厂模式"。简单工厂模式是...

    简单工厂模式应用

    工厂类`SimpleFactory`会根据输入条件(可能是参数、配置文件或其他方式)来决定创建哪种具体的产品。 工厂方法通常包含如下步骤: 1. **接收输入**:工厂类接收必要的输入,这可以是一个标识符,用来区分要创建的...

    抽象工厂模式+反射技术(抽象工厂模式+简单工厂模式)

    在软件工程中,当系统需要在运行时选择不同的产品族时,或者想要隔离具体产品的实现细节时,抽象工厂模式就显得尤为重要。 首先,我们来看一下“抽象工厂模式+反射技术”。在Java或其他面向对象的语言中,反射是一...

    抽象工厂模式实现代码(利用了反射)

    在"抽象工厂模式实现代码(利用了反射)"中,我们可能会看到以下核心概念: 1. **抽象工厂**:这是模式的核心,定义了一个创建对象的接口,但不指定或依赖于实际的类。例如,可以有一个`IProductFactory`接口,包含...

    反射+抽象工厂模式的简易实现

    在本例中,“反射+抽象工厂模式的简易实现”结合了这两种技术,以达到更灵活的代码结构和解耦目的。 首先,让我们详细了解一下反射。在Java或类似的面向对象语言中,反射允许我们在运行时动态地获取类的信息(如...

    工厂模式的测试并有spring ioc的简单实现

    1. **简单工厂模式**(simpleFactory):这种模式中,我们通常定义一个工厂类,它根据传入的参数来决定创建哪种具体的产品对象。简单工厂模式适用于产品种类不多,且不会频繁扩展的情况。在测试中,我们可以模拟不同...

    C#工厂模式多数据库(实现SQL和MYSQL的切换)

    在C#中,工厂模式通常通过定义一个接口或抽象类,然后由多个具体类实现这个接口或继承这个抽象类来完成。当需要创建对象时,我们不再直接实例化具体的类,而是通过工厂类来创建,这样就解耦了对象的创建与对象的使用...

    设计模式单例模式和工厂模式综合应用

    工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式,根据具体需求选择合适的实现。 在这个项目中,单例模式可能被用来创建一个工厂类,这个工厂类负责生产特定类型的手机(或其他产品)。这样的设计可以确保在...

    软件设计与体系结构-工厂模式实验.doc

    在本实验中,我们使用反射技术来改写工厂类,并且使用反射技术来根据配置文件的内容创建运算对象。 六、实验结果 通过本实验,我掌握了使用简单工厂模式编写四则运算程序,并能够通过反射技术改写工厂类。实验结果...

    IoC容器的设计(利用反射、注解和工厂模式实现)

    1. 利用注解、反射和工厂模式设计一个简单的IoC容器 2. 该IoC容器包含3个注解和一个IoC容器类(AnnotationConfigApplicationContext),其定义如下: 注解 含义 @Component 标注Bean @Autowired 标注需要被注入的...

    工厂模式详解

    通过阅读压缩包中的"model"文件,你可以进一步了解工厂模式的代码实现,包括如何定义抽象工厂和具体工厂,以及如何使用反射和properties文件来增强工厂模式的灵活性和可配置性。记住,理解并熟练运用这些设计模式是...

    JAVA设计模式的工厂模式文档和代码

    工厂模式是设计模式中的一种,属于创建型模式,它的主要目标是提供一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂模式使代码能够独立于实际的产品类型进行工作。 工厂模式的核心思想是通过一个共同的...

    简单工厂模式案例

    在实际编程中,简单工厂模式常用于工具类、配置文件解析等场景,例如根据不同的数据库类型创建相应的数据库连接对象。通过阅读"Simple-Factory"案例的源代码,可以更深入地理解如何在实际项目中应用这个模式。

    winform 反射工厂模式的实现源码

    在这个"winform 反射工厂模式的实现源码"中,我们可以探讨如何将这两种技术结合到WinForm应用中。 首先,让我们来理解一下这两个概念: 1. **反射**:反射是.NET框架提供的一种能力,它允许运行中的代码获取关于...

Global site tag (gtag.js) - Google Analytics