`
wangwengcn
  • 浏览: 174858 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

2.工厂方法模式(Factory Method)

阅读更多

定义:

定义一个用于创建对象的接口,让子类来决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

它是简单工厂模式的一种延伸。

 

例子:

Spring中ApplicationContext的getBean方法就是典型的工厂方法模式。

 

工厂方法的通用代码:

 

产品抽象类

 

package _2FactoryMethodPattern;

public abstract class Product {

	public void method1()
	{
		//处理业务逻辑
	}
	 
	public abstract void method2();
}

 

产品实现类1

 

package _2FactoryMethodPattern;

public class SubProduct1 extends Product {

	@Override
	public void method2() 
	{
		
	}

}

 

产品实现类2

 

package _2FactoryMethodPattern;

public class SubProduct2 extends Product {

	@Override
	public void method2() 
	{
		
	}

}

 

 

工厂接口类

 

package _2FactoryMethodPattern;

public interface IProductFactory {
	public <T extends Product> T createProduct(Class<T> c);
}

 

 

工厂实现类

 

package _2FactoryMethodPattern;

public class ProductFactory implements IProductFactory {

	@SuppressWarnings("unchecked")
	@Override
	public <T extends Product> T createProduct(Class<T> c) {
		Product p = null;
		try {
			p = (Product)Class.forName(c.getName()).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return (T)p;
	}

}

 

client类

 

 

package _2FactoryMethodPattern;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		IProductFactory factory = new ProductFactory();
		Product product = factory.createProduct(SubProduct1.class);
		// 继续业务逻辑
	}

}

 

工厂方法模式的优点:

  1. 良好的封装性,代码结构清晰
  2. 工厂方法模式的扩张性非常优秀
  3. 屏蔽产品类
  4. 工厂方法模式是典型的解耦框架

工厂方法模式的应用场景

  1. 工厂方法模式是new一个对象的替代品,所以在需要生成对象的地方都可以使用,但是需要慎重的考虑是否需要增加一个工厂类进行管理,增加代码的复杂度。
  2. 需要灵活的、可扩展的框架时,可以考虑使用工厂方法模式。
  3. 可以使用在测试驱动开发的框架下。例如,测试一个类A,就需要把与类A有关联的类B也同时产生出来,我们可以使用工厂方法模式把类B虚拟出来,避免A和B的耦合。
分享到:
评论

相关推荐

    工厂方法模式(FactoryMethod)

    工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建对象,而具体的创建过程被延迟到了子类中,使得子类可以在不修改原有代码的基础上决定...

    设计模式之-工厂方法-FactoryMethod

    《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...

    创建型模式之工厂方法模式(Factory Method Pattern)

    工厂方法模式与简单工厂模式相比,具有更好的可扩展性。在简单工厂模式中,工厂类通常是静态的,负责创建所有类型的对象,这导致在添加新产品时,需要修改工厂类。而在工厂方法模式中,每种产品都有专门的工厂类负责...

    设计模式之“工厂方法模式[Factory Method Pattern]”

    - **简单工厂模式**:工厂方法模式比简单工厂模式更具有扩展性和灵活性,简单工厂模式只有一个静态工厂方法,而工厂方法模式则允许有更多的具体工厂。 - **抽象工厂模式**:工厂方法模式关注单个产品族,而抽象工厂...

    C++的设计模式之工厂方法模式(Factory Method)

    C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)

    设计模式C++学习之工厂方法模式(Factory Method)

    设计模式C++学习之工厂方法模式(Factory Method)

    Factory Method 工厂方法模式(创建型模式).wmv

    Factory Method 工厂方法模式(创建型模式).wmv

    设计模式 FACTORY METHOD(工厂方法)

    工厂方法(Factory Method)是面向对象设计模式中的一个基础且广泛应用的模式,它属于创建型模式,主要目的是为了解耦对象的创建过程。本文将深入探讨工厂方法的设计理念、实现方式及其在实际开发中的应用。 ### ...

    Factory Method 工厂方法模式(创建型模式)

    ### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是一种在特定上下文中解决常见问题的通用方案。Factory Method(工厂方法)模式是GoF(Gang of Four)设计模式之一,属于创建型...

    工厂方法和抽象工厂——Factory Method & Abstract Factory

    在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...

    c++-深入浅出讲解一下 “工厂方法模式 (Factory Method)”

    工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪一个具体类。这样,客户端代码就不需要知道具体的类是什么,只需通过工厂接口获取对象。 工厂...

    Factory Method Pattern.rar【GoF的工厂方法模式(C#源码)】

    它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar

    C#设计模式_设计模式_C#_

    工厂方法模式(Factory Method) 5. 原型模式(Prototype)结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。

    002FactoryMethod.rar

    工厂方法(Factory Method)设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个类的实例化延迟到了子类,这样做的好处是每个子类可以决定实例化哪一个类。这种类型的设计模式...

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式)

    简单工厂模式中,创建对象的逻辑集中在单个工厂类中,而工厂方法模式则将创建对象的责任分散到多个子类中,使得系统更易于维护和扩展。 总的来说,工厂方法模式在C#中的应用广泛,尤其是在需要灵活地创建不同类型...

    设计模式代码——c#

    4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern...

Global site tag (gtag.js) - Google Analytics