设计模式 | 抽象工厂模式

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 设计模式 | 抽象工厂模式

说明

这个也是工厂模式, 我们看过简单工厂, 简单工厂会让该工厂的职责越来越重。这里有个抽象工厂, 为了解决由于工厂方法模式中每个工厂只创建一类实例对象, 导致工厂类过多。

我们可以将具体类组成一个类别, 由一个工厂来产生, 这就是抽象工厂

  • 定义

提供一个创建一系列相关或相互依赖对象的接口, 而无需指定他们具体的类

  • 应用场景

程序需要处理不同系统的相关产品, 但是客户不需要依赖于这些产品的具体类, 可以使用抽象工厂

示例

  • 利用工厂模式 设计多个数据库操作,连接、命令发送等等 例如 mysqloracle...
<?php
/**
 * Created by 憧憬.
 */
/**
 * 定义连接约束
 * Interface IConnection
 */
interface IConnection {
    public function connect();
}
/**
 * 定义命令约束
 * Interface ICommand
 */
interface ICommand {
    public function command();
}
/**
 * mysql连接实现
 * Class MysqlConnect
 */
class MysqlConnect implements IConnection {
    public function connect()
    {
        echo 'mysql connect';
    }
}
/**
 * mysql命令发送
 * Class MysqlCommand
 */
class MysqlCommand implements ICommand {
    public function command()
    {
        echo 'mysql command';
    }
}
/**
 * 抽象工厂约束
 * Interface IDataBase
 */
interface IDataBase {
    public function getConnect();
    public function getCommand();
}
/**
 * mysql工厂实现
 * Class MysqlServer
 */
class MysqlServer implements IDataBase {
    public function getConnect()
    {
        return new MysqlConnect();
    }
    public function getCommand()
    {
        return new MysqlCommand();
    }
}
$mysqlServer = new MysqlServer();
$mysqlServer->getConnect()->connect();
$mysqlServer->getCommand()->command();

如果我还需要oracle操作我直接实现就ok

这里如果使用简单工厂 就需要修改整体结构,使用抽象工厂 只需要提供各个实现即可 最后实现工厂即可,当然抽象工厂模式同样具有工厂模式对结构要求高的缺点,整体结构的扩展或精简将变得更加的烦杂,所以使用抽象工厂模式时,对等级结构的划分是非常重要的。

本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
设计模式 C++
设计模式之抽象工厂模式(C++)
设计模式之抽象工厂模式(C++)
|
6月前
|
设计模式
设计模式~抽象工厂模式-04
抽象工厂 优点 缺点 使用场景 为创建一组相
29 0
|
4月前
|
设计模式 Java
Java设计模式【三】:抽象工厂模式
Java设计模式【三】:抽象工厂模式
21 0
|
7天前
|
设计模式 Java
【设计模式系列笔记】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种设计模式,属于创建型模式之一。它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式通过引入抽象的工厂接口,使得客户端代码可以使用抽象的接口来创建一组相关的产品,而不关心这些产品的具体实现。
103 4
|
7月前
|
设计模式
设计模式~~~抽象工厂模式
设计模式~~~抽象工厂模式
29 0
|
23天前
|
设计模式 Java Windows
23种设计模式,抽象工厂模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建相关或依赖对象的家族,而不需要指定具体类。该模式允许客户端在不知道具体类的情况下,通过其共同的接口来创建一组产品。
29 7
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——02抽象工厂模式
Golang设计模式——02抽象工厂模式
23 0
|
8月前
|
设计模式 Java 数据库连接
Java设计模式之抽象工厂模式:创造多个相关对象
在软件开发领域,设计模式是一种用于解决常见问题的实践方法,它提供了一些被验证过的指导原则。抽象工厂模式是创建型设计模式中的佼佼者,可以帮助我们在处理多个相关对象的创建时保持一致性。让我们深入了解抽象工厂模式的内涵以及它如何在Java中应用。
61 0
|
3月前
|
设计模式 前端开发
【设计模式】之抽象工厂模式
抽象工厂模式是一种创建型设计模式,适用于需要创建一系列相关或相互依赖对象的场景。在前端开发中,抽象工厂模式可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。它通过封装对象的创建过程,使得客户端代码与具体类解耦,并且可以通过切换具体工厂类来改变整个系统的行为。然而,它也增加了系统的复杂度,并且当产品族较多时会导致大量的具体工厂类。因此,在使用抽象工厂模式时需要权衡利弊,并根据实际情况进行选择。
54 0
【设计模式】之抽象工厂模式
|
3月前
|
设计模式 NoSQL 中间件
设计模式 - 创建型模式_抽象工厂模式
设计模式 - 创建型模式_抽象工厂模式
23 0