这两天又了解了工厂方法模式与抽象工程模式。我习惯把一些东西对比分析,这样理解会更加深刻。
工厂方法模式的组成成员:一个工厂类、一个产品接口、若干实现接口的具体产品类;
工厂方法模式的特点:
产品接口:
将产品的公共属性和方法抽象出来;
具体产品类:
实现产品接口;
工厂类:
产生产品的方法,一般通过反射获取产品,返回产品接口类型;
抽象工厂模式的组成成员:一个工厂接口、若干个实现工厂接口的实体工厂、一个产品接口、若干个抽象产品、若干个实体产品;
抽象工厂模式的特点:
产品接口:
包含公共的产品属性和方法;
抽象产品:
产品分类,每一种产品都有一个实现产品接口的抽象产品类;
实现产品接口中一部分公共方法,这部分是这一类产品所共有的;
实体产品:
继承某个抽象产品类,并实现抽象类中未实现的接口方法;
工厂接口:
包含公共的生成产品的方法,一般通过反射获取产品实例,返回产品接口类型;
实体工厂:
实现抽象工厂的方法,只生产某种类别的产品;
有多少个抽象产品,工厂中就有多少个方法。
由以上分析看来,在工厂方法模式中添加产品的类别,以及生成不同类别产品的工厂,就成了更具有普遍意义的抽象工厂模式。
抽象工厂模式中有两个重要概念:产品族和产品结构。
简单理解为产品族即具体的产品,产品结构即产品的分类。
增加产品族只需要增加工厂就OK;增加产品结构则需要添加新的产品类型,所有的工厂都要添加产生新类型产品的方法。
如:人可以分为男人和女人,同时可分为富人和穷人。
假设处理为:富人类和穷人类;生产男人的工厂和生产女人的工厂。
添加“人妖”或者“太监”就只需要添加工厂就OK;而添加“超级富豪”或者“超级穷光蛋”则需要在已有的工厂中,除了“生产富人”和“生产穷人”之外,还要添加“生产超级富豪”或者“生产超级穷光蛋”的方法。
所以合理的做法应该是:男人类和女人类;生产富人的工厂和生产穷人的工厂。因为性别比较稳定,基本上不会变动(虽然出现了春哥和著姐等大腕,但大多数人还是正常的),这种处理方式更能支持ocp原则。
分享到:
相关推荐
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...
与工厂方法模式相比,抽象工厂模式更进一步,它提供了创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在抽象工厂模式中,不只一个产品类被创建,而是有一组相关的产品类。这种模式适用于当系统需要...
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
工厂方法模式与抽象工厂模式的主要区别在于: 1. **复杂度**:工厂方法模式只关注一个产品的创建,而抽象工厂模式关注的是一个产品族的创建。 2. **灵活性**:工厂方法模式允许子类决定实例化哪个类,提供了更大的...
本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...
**抽象工厂模式** 是工厂方法模式的进一步抽象和推广,它关注的是整个一族相关或相互依赖的对象。抽象工厂提供了一组接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这个模式适用于当系统需要...
本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...
本文将深入探讨Java中的工厂模式,包括基本的工厂模式、抽象工厂模式以及工厂方法模式。 **工厂模式**:工厂模式的核心思想是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端无需...
本资源主要介绍工厂方法模式和抽象工厂模式。二者都与工厂相关,,但是其本质又大相径庭。这里先来简单介绍下二者的区别,以免混淆。 抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。...
在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。让我们一一探讨这些模式。 1. 简单工厂模式: 简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。...
在Java中,工厂模式分为三种:简单工厂、工厂方法模式和抽象工厂模式。 **简单工厂模式** 是最基本的工厂模式,它由一个工厂类根据传入的参数决定创建哪一种产品类的实例。简单工厂容易实现,但违反开闭原则,即...
根据描述,我们将深入探讨Java中的两种工厂模式:工厂方法模式和抽象工厂模式,并通过实例来理解它们的工作原理。 首先,我们来看**工厂方法模式**。这种模式定义了一个用于创建对象的接口,但让子类决定实例化哪一...
从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...
通过以上分析,我们可以看到,工厂方法模式和抽象工厂模式都是为了解决对象创建的问题,它们在设计模式中扮演着重要角色,帮助我们构建更加灵活、可扩展的软件系统。在具体项目中,合理运用这两种模式可以提高代码的...
本章要点部分总结了抽象工厂模式的核心概念和设计原则,同时还区分了抽象工厂模式与工厂方法模式的不同,以及抽象工厂模式的具体使用场合。通过本章的学习,我们能够掌握抽象工厂模式的原理和应用,为解决实际开发中...
工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式
工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
通过抽象工厂模式,我们可以将产品对象的创建过程封装起来,使得客户端代码只需要与抽象工厂交互,而不关心具体的产品实现。这样可以提高代码的灵活性,当需要更换产品族或者添加新的产品族时,只需修改或添加新的...
抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。它允许客户端创建一个产品族,其中每个产品都是同一类别中的一个实例,如创建GUI组件,可以同时为Windows和Mac OS提供对应的...