抽象工厂模式解决的是系列产品的问题,即工厂生产的产品本身存在着抽象且有不同的实现,此场景适合使用抽象工厂。
Coding:
1、抽象产品A系列
//定义不同的产品之间的一定具备的标准,用interface实现 //其中的method()方法可看作提取出不同产品的共性,如手机都有类似的功能 public interface IProductA { public void method(); }
1.1、厂商1 A系列的产品
public class ProductA1 implements IProductA { public void method() { System.out.println("厂商1 生产**********"); } }
1.2、厂商2 A系列的产品
public class ProductA2 implements IProductA { public void method() { System.out.println("厂商2 生产**********"); } }
2、抽象产品B系列
//定义不同的产品之间的一定具备的标准,用interface实现 //其中的method()方法可看作提取出不同产品的共性,如手机都有类似的功能 public interface IProductB { public void method(); }
2.1、厂商1 B系列的产品
public class ProductB1 implements IProductB { @Override public void method() { System.out.println("厂商1 生产*******"); } }
2.2、厂商2 B系列的产品
public class ProductB2 implements IProductB { @Override public void method() { System.out.println("厂商2 生产*******"); } }
3、抽象工厂,生成A、B系列产品
//每一种牌子的产品生产工厂,即不同的厂商负责自己牌子产品的生产 public abstract class Factory { public abstract IProductA getProductA(); public abstract IProductB getProductB(); }
4、厂商1 生产的A、B系列的产品
//具体的工厂用来生产相关的产品 public class FactoryImpl1 extends Factory { @Override public IProductA getProductA() { return new ProductA1(); } @Override public IProductB getProductB() { return new ProductB1(); } }
5、厂商2 生产的A、B系列的产品
//具体的工厂用来生产相关的产品 public class FactoryImpl2 extends Factory { @Override public IProductA getProductA() { return new ProductA2(); } @Override public IProductB getProductB() { return new ProductB2(); } }
6、客户端调用工厂模式获取产品
public class Client { public static void main(String[] args) { Factory ff1 = new FactoryImpl1(); ff1.getProductA().method(); ff1.getProductB().method(); System.out.println("--------------------------------"); Factory ff2 = new FactoryImpl2(); ff2.getProductA().method(); ff2.getProductB().method(); } }
针对客户端来说只需要切换抽象工厂的实现即可控制程序产生不同的系列产品,抽象工厂存在的问题,一旦系列产品比较多,那么就会存在工厂泛滥的情况。
相关推荐
《C++20设计模式》学习笔记-第3章工厂方法和抽象工厂模式学习代码
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
在软件设计领域,设计模式是一种经过验证的、通用的解决方案,用于解决常见编程问题。"工厂模式"是其中一种常用...通过实践和学习,你可以更好地掌握这些设计模式,并将其应用到你的项目中,提升软件开发的效率和质量。
在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件...设计模式的学习与应用是软件工程专业人员不断成长和进步的重要途径之一。
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。...对于更复杂的情况,可以考虑使用其他设计模式,如工厂方法模式、抽象工厂模式等。
共150讲,时长共 33...1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括...
以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...
在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...
这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
在《设计模式学习笔记之工厂模式.doc》中,可能会详细解析工厂模式的定义、结构、优缺点、适用场景以及具体代码实现。文档可能会通过实例演示如何在实际项目中应用工厂模式,例如创建数据库连接、构建GUI组件等。...
根据给定的信息“图解设计模式,结城浩著学习笔记”,我们可以推断出这份文档主要涉及了设计模式的学习和理解。《图解设计模式》是一本由日本著名程序员结城浩撰写的书籍,该书以图形化的方式深入浅出地讲解了软件...