C#演示抽象工厂模式

本文介绍了抽象工厂模式,它是创建型模式,围绕超级工厂创建其他工厂。该模式包含抽象工厂、具体工厂、抽象产品和具体产品四个核心角色。抽象工厂声明创建产品方法,具体工厂实现接口创建实例,抽象产品定义公共接口,具体产品实现特定行为和属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。


抽象工厂模式包含以下几个核心角色:
抽象工厂(Abstract Factory):声明了一组用于创建产品对象的方法,每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。
具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象的实例。
抽象产品(Abstract Product):定义了一组产品对象的共同接口或抽象类,描述了产品对象的公共方法。
具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。


抽象工厂:

 public abstract class AbstructFactory
    {
        public abstract Comptuter GetComptuter(string name);
        public abstract Phone GetPhone(string name);
    }


具体工厂:
 

internal class ComptuterFactory : AbstructFactory
    {
        public override Comptuter GetComptuter(string name)
        {
            Comptuter comptuter = null;
            switch (name)
            {
                case "Apple":
                    comptuter = new AppleComptuter();
                    break;
                case "Dell":
                    comptuter = new DellComptuter();
                    break;
                case "Lesson":
                    comptuter = new LessonComptuter();
                    break;
            }

            return comptuter;
        }

        public override Phone GetPhone(string name)
        {
            Phone phone = null;
            switch (name)
            {
                case "Apple":
                    phone = new ApplePhone();
                    break;
                case "ReMi":
                    phone = new ReMiPhone();
                    break;
                case "HauWei":
                    phone = new HauWeiPhone();
                    break;
            }

            return phone;
        }
    }


 internal class PhoneFactory : AbstructFactory
    {
        public override Comptuter GetComptuter(string name)
        {
            Comptuter comptuter = null;
            switch (name)
            {
                case "Apple":
                    comptuter = new AppleComptuter();
                    break;
                case "Dell":
                    comptuter = new DellComptuter();
                    break;
                case "Lesson":
                    comptuter = new LessonComptuter();
                    break;
            }

            return comptuter;
        }

        public override Phone GetPhone(string name)
        {
            Phone phone = null;
            switch (name)
            {
                case "Apple":
                    phone = new ApplePhone();
                    break;
                case "ReMi":
                    phone = new ReMiPhone();
                    break;
                case "HauWei":
                    phone = new HauWeiPhone();
                    break;
            }

            return phone;
        }
    }


抽象产品:
 

public abstract class Comptuter
    {
        public abstract string Name();
    }


 public abstract class Phone
    {
        public abstract string Name();
    }

具体产品:
 

internal class ReMiPhone : Phone
    {
        public override string Name()
        {
            return "小米手机";
        }
    }


  internal class DellComptuter : Comptuter
    {
        public override string Name()
        {
            return "戴尔电脑";
        }
    }

具体使用:
 

AbstructFactory a = new ComptuterFactory();
  AbstructFactory b = new PhoneFactory();
  
  Cp1 = a.GetComptuter("Dell").Name();
  Cp2 = a.GetComptuter("Apple").Name();
  Cp3 = a.GetComptuter("Lesson").Name();
  
  Ph1 = b.GetPhone("Apple").Name();
  Ph2 = b.GetPhone("ReMi").Name();
  Ph3 = b.GetPhone("HauWei").Name();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_shenbing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值