设计模式-抽象工厂模式

以下是一个简单的C#实现抽象工厂模式的例子:

cs 复制代码
using System;
 
// 抽象产品类
public abstract class AbstractProductA
{
    public abstract void Show();
}
 
public abstract class AbstractProductB
{
    public abstract void Show();
}
 
// 具体产品类
public class ProductA1 : AbstractProductA
{
    public override void Show()
    {
        Console.WriteLine("Product A1");
    }
}
 
public class ProductA2 : AbstractProductA
{
    public override void Show()
    {
        Console.WriteLine("Product A2");
    }
}
 
public class ProductB1 : AbstractProductB
{
    public override void Show()
    {
        Console.WriteLine("Product B1");
    }
}
 
public class ProductB2 : AbstractProductB
{
    public override void Show()
    {
        Console.WriteLine("Product B2");
    }
}
 
// 抽象工厂类
public interface IAbstractFactory
{
    AbstractProductA CreateProductA();
    AbstractProductB CreateProductB();
}
 
// 具体工厂类
public class ConcreteFactory1 : IAbstractFactory
{
    public AbstractProductA CreateProductA()
    {
        return new ProductA1();
    }
 
    public AbstractProductB CreateProductB()
    {
        return new ProductB1();
    }
}
 
// 客户端代码
public class Client
{
    public static void Main()
    {
        IAbstractFactory factory = new ConcreteFactory1();
        AbstractProductA productA = factory.CreateProductA();
        AbstractProductB productB = factory.CreateProductB();
 
        productA.Show();
        productB.Show();
    }
}

这个例子中,我们定义了两个抽象产品类AbstractProductAAbstractProductB,以及它们的具体实现类ProductA1ProductA2ProductB1ProductB2。然后我们定义了一个抽象工厂接口IAbstractFactory,以及实现该接口的具体工厂类ConcreteFactory1。客户端代码Client使用ConcreteFactory1来创建产品A和产品B的实例,并调用它们的Show方法来展示。这就是抽象工厂模式的一个简单实现。

相关推荐
还是大剑师兰特3 分钟前
C#面试题及详细答案120道(86-95)-- 进阶特性
c#·大剑师
吃饺子不吃馅5 分钟前
面试官:JWT、Cookie、Session、Token有什么区别?
前端·设计模式·面试
leafff1231 小时前
一文读懂:如何选择适合的RAG系统架构设计模式?
设计模式·自然语言处理·系统架构
我是唐青枫3 小时前
C#.NET ControllerBase 深入解析:Web API 控制器的核心基石
c#·.net
ZHE|张恒3 小时前
设计模式实战篇(一):彻底搞懂 Singleton 单例模式
单例模式·设计模式
O败者食尘D4 小时前
【C#】使用Enigma将Winform或WPF打包成一个exe
c#
The Sheep 20237 小时前
C# 吃一堑,长一智
c#
q***829113 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
hixiong12315 小时前
C# OpenCVSharp实现Hand Pose Estimation Mediapipe
开发语言·opencv·ai·c#·手势识别
baivfhpwxf202316 小时前
SQL Server 服务端如何在其他电脑连接
c#