设计模式-抽象工厂模式

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

相关推荐
kokunka4 分钟前
C#类修饰符功能与范围详解
java·开发语言·c#
孟祥_成都29 分钟前
下一代组件的奥义在此!headless 组件构建思想探索!
前端·设计模式·架构
mudtools31 分钟前
.NET驾驭Excel之力:工作簿与工作表操作基础
c#·.net·excel
mudtools33 分钟前
.NET驾驭Excel之力:单元格与区域操作详解
c#·.net·excel
用户8356290780513 小时前
C# 自动化生成 PowerPoint 演示文稿
后端·c#
饮品爱好者4 小时前
[C#] NO.4 我的第一个项目
vscode·职场和发展·c#·github
专注VB编程开发20年6 小时前
.net按地址动态调用VC++DLL将非托管DLL中的函数地址转换为.NET可调用的委托
开发语言·c++·c#·.net
玩泥巴的8 小时前
.NET驾驭Excel之力:工作簿与工作表操作基础
c#·excel·二次开发·office·com互操作
czhc11400756638 小时前
C# 1116 流程控制 常量
开发语言·c#
颜酱8 小时前
理解编程的设计原则(前端角度)
设计模式