设计模式-抽象工厂模式

以下是一个简单的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方法来展示。这就是抽象工厂模式的一个简单实现。

相关推荐
人工智能AI技术1 小时前
DeskClaw Windows上线|C#开发AI桌面助手,轻量内核源码解析
人工智能·c#
似水明俊德1 小时前
04-C#.Net-委托和事件-面试题
java·开发语言·面试·c#·.net
程序员老乔4 小时前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(二):Valhalla落地,值类型如何让电商DTO内存占用暴跌
java·spring boot·c#
祝大家百事可乐5 小时前
嵌入式——02 数据结构
c++·c#·硬件工程
Yu_Lijing5 小时前
基于C++的《Head First设计模式》笔记——生成器模式
c++·笔记·设计模式
我是唐青枫5 小时前
深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
c#·.net
sg_knight6 小时前
设计模式实战:策略模式(Strategy)
java·开发语言·python·设计模式·重构·架构·策略模式
吐个泡泡v6 小时前
Python 开发“设计模式”指南
python·设计模式
唯情于酒7 小时前
net core web api 使用log4net
c#·.net core