最初发表在这里。
工厂方法的使用者可能会面临两种情况:第一种情况是对于某个产品,我清楚地知道应该使用哪个具体工厂为我服务,于是,我实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。第二种情况,我只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为我生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。
两种情况下具体的实现是不一样的,对于第一种情况,很可能是产品和生产者(工厂)各有一个公共接口,然后不同的具体工厂生产出对应不同的产品,二者出现平行的类结构。第二种情况各个具体生成者的共同父类通过静态方法的形式对外提供一个接口,返回哪个具体工厂实例的判断逻辑在该静态方法中实现,使用者通过调用该静态方法得到具体的工厂实例。
//情况一:
Factory fac = new FactoryImplA(); //指定工厂
Product pro = fac.createProduct(); // 由指定工厂生成出具体的产品
pro.use();
//情况二:
Factory fac = Factory.createFactory();
Product pro = fac.createProduct(); // 由指定工厂生成出具体的产品
pro.use();
//
public interface Factory{
.............
public static Factory createFactory(){
if(....){
return new FactoryImplA();
}else{
return new FactoryImplB();
}
}
}
抽象工厂一般通过工厂方法来实现(还可以通过原型来构造),如果将工厂方法比作一个独立的小厂房,那么抽象工厂就是一个大集团了,在它旗下,集合了很多工厂,虽然生成不同的产品,但是都有该集团的徽号。譬如说,虽然lenovo的鼠标键盘是罗技的,显示器是philips做的,但是都打上了联想的标志。我们买了一套联想的PC,就整套都带有联想的风格,这跟Dell是不一样的。我们平时所说的“look and feel”也就这个道理。你相要哪种风格,就看你选的是哪个集团了。
分享到:
- 2009-04-06 22:19
- 浏览 1497
- 评论(0)
- 论坛回复 / 浏览 (0 / 1462)
- 查看更多
相关推荐
抽象工厂模式可以保证在任何环境下都能正确地创建对象,提高了代码的可移植性,但其缺点是增加新平台时,需要增加新的抽象工厂和一系列具体工厂,这可能会导致系统结构变得复杂。 对比这三种工厂模式: 1. **简单...
在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...
《C++20设计模式》学习笔记-第3章工厂方法和抽象工厂模式学习代码
- `factory2`、`factory3`、`factory1` 这些文件名可能是实现工厂模式的Java源代码,分别代表了不同级别的工厂类,如简单工厂、工厂方法和抽象工厂的实现。通过查看这些源代码,可以学习到如何在实际项目中应用这些...
今天我们将深入探讨三种主要的设计模式:简单工厂、工厂方法和抽象工厂。 ### 简单工厂模式 简单工厂模式是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露创建逻辑。这个静态方法根据输入参数来...
工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...
工厂模式分为三种主要形态:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂方法模式,它通过一个静态方法来创建对象。在这个例子中,`FruitGardener` 类就是简单工厂,它根据输入的...
在软件设计模式中,工厂方法模式和抽象工厂模式是两种常用的创建型模式,它们都用于对象的创建,但各有特点和适用场景。首先,我们来理解这两种模式的基本概念。 **简单工厂模式**: 简单工厂模式是一种较为初级的...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
本主题聚焦于C++中的三个工厂模式:简单工厂、工厂方法和抽象工厂。这些模式都围绕着对象的创建过程,旨在提高代码的灵活性、可读性和可维护性。 1. **简单工厂模式**: - 简单工厂模式是一种静态工厂方法,它提供...
工厂模式是C++软件开发中非常实用的设计模式之一,通过合理运用简单工厂、工厂方法和抽象工厂,可以有效地提升软件的结构清晰度、可维护性和扩展性。理解并掌握这些模式对于构建高质量、可扩展的软件系统至关重要。...
在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...
在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象的创建。这两种模式都是为了将对象的创建过程封装起来,使得客户端代码无需关心具体的实现细节,只需调用工厂提供的接口即可...
设计模式是软件工程中的一...简单工厂模式适合初学者入门,而工厂方法和抽象工厂模式则更适用于大型项目,以提高代码的灵活性和可维护性。理解并合理运用这些设计模式,能够帮助开发者构建更加稳定、可扩展的软件系统。
工厂方法、简单工厂和抽象工厂是创建型设计模式的三种不同形式,它们都关注于对象的创建过程,但各有其特点和适用场景。 1. **工厂方法(Factory Method)**: 工厂方法模式定义了一个创建对象的接口,但让子类...
在Java等面向对象编程语言中,工厂模式分为简单工厂、工厂方法和抽象工厂三种类型。标题中的“抽象工厂”是工厂模式的一种高级形式,它关注于创建一系列相关的或相互依赖的对象家族,而不仅仅是一个单独的对象。抽象...
在软件设计模式中,"抽象工厂"、"工厂方法"和"简单工厂"都是创建型设计模式,它们都用于封装对象的创建过程,提供了一种间接的途径来创建对象,从而使得代码更加灵活,易于扩展。下面将详细介绍这三个工厂模式。 ##...
工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式
工厂方法(Factory Method)和抽象工厂方法(Abstract Factory Method)是两种常见的设计模式,尤其在Java编程中被广泛应用。这个"工厂方法应用实例源码"展示了如何在实际项目中使用这两种设计模式来实现一个馅饼店...