设计模式-抽象工厂模式

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

相关推荐
「QT(C++)开发工程师」1 小时前
C++设计模式
开发语言·c++·设计模式
东边的小山2 小时前
python 图形界面多个WORD按名字排序合并成一个WORD
python·c#·word
茶本无香2 小时前
设计模式之七—装饰模式(Decorator Pattern)
java·设计模式·装饰器模式
大王小生11 小时前
说说CSV文件和C#解析csv文件的几种方式
人工智能·c#·csv·csvhelper·csvreader
LongtengGensSupreme12 小时前
C# 中监听 IPv6 回环地址----HttpListener
c#·ipv6·httplistener
漂洋过海的鱼儿14 小时前
设计模式——EIT构型(三)
java·网络·设计模式
zzcufo14 小时前
多邻国学习笔记第五阶段第10-11部分
笔记·学习·c#
easyboot20 小时前
C#使用pythonnet简单示例
开发语言·python·c#
刘欣的博客21 小时前
c# winform 控件dock 停造位置、摆放顺序问题
c#·winform·dock停靠问题
老蒋每日coding1 天前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式