设计模式-抽象工厂模式

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

相关推荐
玖玥拾5 小时前
Unity 3D 笔记(十二)Unity/C# Socket 网络笔记1
网络·unity·c#
EIP低代码平台5 小时前
EIP低代码平台 - 系统日志
低代码·c#·权限·工作流·netcore
萧青山6 小时前
2026国标合规:Agent Loop合规设计模式的6种循环架构(GB/Z 185.6+Python)
python·设计模式·agent loop·gb/z 185·国标合规
玖玥拾6 小时前
Unity 3D 笔记(十五)Unity/C# Socket 网络笔记4
服务器·网络·unity·c#
EIP低代码平台14 小时前
EIP 低代码平台 - 角色维护
低代码·c#·权限·工作流·netcore
心平气和量大福大19 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
杨充21 小时前
11.DDD与战术建模
设计模式·开源·代码规范
杨充21 小时前
12.综合实战图片框架
设计模式·开源·代码规范
-银雾鸢尾-1 天前
C#中HashTable相关方法
开发语言·c#
芝士熊爱编程1 天前
创建型模式-单例模式
java·单例模式·设计模式