- 浏览: 102584 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Factory Method模式的概念 在大规模的系统开发过程中,考虑系统的灵活性,低耦合性,可扩展性等因素,常常不直接使用new来生成类的实例,而是通过一个叫做工厂(Factory)的类来专门生成类的实例。Factory Method模式,在上述基础上,把类的实例生成的任务委让给子工厂去完成的一种设计方法,所以Factory Method模式又被称为多态工厂(Polymorphic Factory)模式。在Factory Method模式中,父工厂类只定义创建对象的公共接口,而子工厂类则负责生成具体的类的实例。 简单一点说,Factory Method模式就是生成类实例(对象)的一种方法。 Factory Method用到以下几个概念: - 父工厂类:定义创建类实例的接口 - 子工厂类:实现接口定义,生成具体的类的实例 - 具有继承关系的产品类:由子工厂类创建 下面举例说明。 有一系列的自动车产品Bus(公交车),Truck(卡车); 它们需要由不同的工厂生产,但具有相同的生产流程。 为了以后扩展其他流水线,比如摩托车,我们需要一种柔软的方案来实现自动车生产的过程。 为了实现这个需求,我们定义了: CarFactory:定义自动车生产的接口规范。 BusFactory:生产Bus。 TruckFactory:生产Truck。 Car:自动车父类,定义了自动车一些公共的属性与行为。 CarBus:公交车,自动车的一种。 CarTruck:卡车,自动车的一种。 下面我们用Factory Method来实现以上模型。 Factory Method模式的实现范例 工厂类定义: 自动车工厂类CarFactory.java abstract class CarFactory { //定义生产自动车生产的接口规范 public Car createCar(); } 生产公交车的工厂类BusFactory.java class BusFactory extends CarFactory { public Car createCar() { //生产公交车 return new CarBus(); } } 生产卡车的工厂类TruckFactory.java class TruckFactory extends CarFactory { public Car createCar() { //生产卡车 return new TruckBus(); } } 产品类定义: 自动车父类Car.java 为了简单起见,只定义了一个方法返回自动车的种类。 public class Car { public String getType() { return "Car"; } } 公交车类CarBus.java public class CarBus extends Car { public String getType() { return "Bus"; } } 卡车类CarTruck.java public class CarTruck extends Car { public String getType() { return "Truck"; } } Client调用:通过工厂类生产不同的自动车 Client.java public class Client { public static void main(String[] args) { CarFactory factory = new BusFactory(); //生产公交车 Car bus = factory.createCar(); System.out.println("生产了:" + bus.getType()); factory = new TruckFactory(); //生产卡车 Car truck = factory.createCar(); System.out.println("生产了:" + truck.getType()); } } 执行Client,输出结果: C:\FactoryMethod>javac *.java C:\FactoryMethod>java Client 生产了:Bus 生产了:Truck C:\FactoryMethod> 我们可以发现,在Client.java里调用时,可以通过共通的父类工厂CarFactory调用同一个createCar()接口方法而取得不同的自动车对象(公交车对象,卡车对象)。 也就是说,可以通过Factory Method模式在不同的子工厂类生成具有统一界面接口的对象,一方面,可以不用关心产品对象的具体实现,简化和统一Client调用过程;另一方面,可以让整个系统具有灵活的可扩展性,如上面的例子中,若要扩展生产摩托车的流水线,只要再实现一个摩托车类以及摩托车工厂类就行,而Client的调用方法完全不需改变。
发表评论
-
设计模式之 State - 状态模式
2010-12-18 16:49 1116State模式也叫状态模式,是由GoF提出的23种软件设计模式 ... -
设计模式之 Strategy - 策略模式
2010-12-18 16:46 1385Strategy模式也叫策略模 ... -
设计模式之 Visitor - 访问者模式
2010-12-18 16:45 1478Visitor模式也叫访问者 ... -
设计模式之 Template Method - 模板方法模式
2010-12-18 16:41 1599Template Method模式也叫模板方法模式,是由G ... -
设计模式之 Observer - 观察者模式
2010-12-18 16:33 1432Observer模式也叫观察者 ... -
设计模式之 Memento - 备忘录模式
2010-12-18 16:31 1084Memento模式也叫备忘录 ... -
设计模式之 Mediator - 中介者模式
2010-12-18 16:29 1144Mediator模式也叫中介者模式,是由GoF提出的23种软件 ... -
设计模式之 Iterator - 迭代模式
2010-12-18 16:27 1194Iterator模式也叫迭代模式,是由GoF提出的23种设 ... -
设计模式之 Interpreter - 解释器模式
2010-12-18 16:23 1028Interpreter模式也叫解释器模式,是由GoF提出的 ... -
设计模式之 Command - 命令模式
2010-12-18 16:20 912Command(CoR)模式也叫命 ... -
设计模式之 Chain of Responsibility - 职责链模式
2010-12-18 16:18 1229Chain of Responsibility(CoR)模 ... -
设计模式之 Proxy - 代理模式
2010-12-16 23:45 1084Proxy模式也叫代理模式,是由GoF提出的23种软件设计 ... -
设计模式之 Flyweight - 享元模式
2010-12-16 23:42 1076Flyweight模式也叫享元模式,是由GoF提出的23种 ... -
设计模式之 Facade - 外观模式
2010-12-16 23:41 1035Facade模式也叫外观模式 ... -
设计模式之 Singleton - 单态模式
2010-11-26 11:58 883Singleton模式也叫单态模式,是由GoF提出的2 ... -
设计模式之 Decorator - 装饰模式
2010-11-25 23:48 833装饰模式,The Decorator Pattern atta ... -
设计模式之 Composite - 组合模式
2010-11-25 23:35 1489Composite模式也叫组合 ... -
设计模式之 Bridge - 桥接模式
2010-11-25 23:08 1041Bridge模式也叫桥接模式,是由GoF提出的23种软件设计模 ... -
设计模式之 Adapter - 适配器模式
2010-11-25 22:58 945Adapter模式也叫适配器模式,是由GoF提出的23种设 ... -
设计模式之Prototype - 原型模式
2010-11-25 22:14 1162Prototype模式也叫原型模式,是由GoF提出的23种设计 ...
相关推荐
《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建对象,而具体的创建过程被延迟到了子类中,使得子类可以在不修改原有代码的基础上决定...
在压缩包中的`FactoryMethod`文件很可能包含了示例代码,这些代码演示了如何在实际的Qt项目中运用工厂方法模式,例如定义工厂类、产品类以及它们之间的关系,以及如何在主程序中调用这些工厂来创建和使用对象。...
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
设计模式C++学习之工厂方法模式(Factory Method)
工厂方法(Factory Method)是面向对象设计模式中的一个基础且广泛应用的模式,它属于创建型模式,主要目的是为了解耦对象的创建过程。本文将深入探讨工厂方法的设计理念、实现方式及其在实际开发中的应用。 ### ...
2. **工厂方法模式**(Factory Method Pattern):定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 3. **抽象工厂模式**(Abstract Factory Pattern):提供一个创建一系列...
### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是一种在特定上下文中解决常见问题的通用方案。Factory Method(工厂方法)模式是GoF(Gang of Four)设计模式之一,属于创建型...
本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...
"工厂方法"(Factory Method)是面向对象设计中的一种经典设计模式,它属于创建型模式,其主要目的是为了抽象产品的创建过程,使得具体的创建过程与使用产品的代码解耦。这个模式在《设计模式:可复用面向对象软件的...
工厂方法模式是面向对象设计模式中的一个核心模式,属于创建型模式。它的主要目的是通过引入一个工厂接口,将具体的对象创建过程封装起来,使得客户端在使用时无须关心产品类的确切实现,只需要通过工厂来获取所需的...
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)
Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。
在实际应用中,`05.Win32ConApp_FactoryMethod-03`可能是项目中的一个源文件或示例代码,它可能包含了如何在Windows 32位环境下实现工厂方法的具体步骤和示例。这可能包括如何创建和使用这些类,以及如何在命令行...
工厂方法模式是设计模式中的创建型模式之一,它在软件工程中扮演着非常重要的角色。这个模式的主要目的是将对象的创建过程抽象出来,使得创建过程独立于使用对象的客户端,从而提高了系统的可扩展性和可维护性。在这...
- 工厂方法模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) - 适配器模式(Adapter) - 装饰器模式(Decorator...
张建中的"C#面向对象设计模式之abstract method视频教程"可能涵盖了如何在C#中实现工厂方法模式的具体步骤,包括如何定义抽象产品类、具体产品类、抽象工厂类和具体工厂类,以及如何在客户端代码中使用这些类。...