C#简单抽象工厂

本文介绍了一个使用抽象工厂模式的C#示例程序。该程序能够根据不同品牌(如索尼和三星)创建对应的MP3和MP4播放器实例。通过切换品牌类型,可以灵活地选择所需的产品类型。

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

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            AbstractFactory abstractFactory = AbstractFactory.Factory("samsang");
            IMP4 iMP4 = abstractFactory.CreateMP4();
            iMP4.Look();
        }
    }

    //抽象工厂
    public abstract class AbstractFactory
    {
        public static  AbstractFactory Factory(string type)
        {
            AbstractFactory factory=null;
            switch(type)
            {
                case "sony":
                    factory=new SonyFactory();
                    break;
                case "samsang":
                    factory=new SamsanyFactory();
                    break;
            }
            return factory;
         }
        //通过抽象产品,创建实际产品
        public abstract IMP3 CreateMP3();
        public abstract IMP4 CreateMP4();
    }

    //索尼的实际工厂
    public class SonyFactory:AbstractFactory
    {
        public override IMP3  CreateMP3()
        {
 	        return new SonyMP3();
        }
        public override IMP4  CreateMP4()
        {
 	        return new SonyMP4();
        }
    }

    //三星的实际工厂
    public class SamsanyFactory:AbstractFactory
    {
        public override IMP3  CreateMP3()
        {
 	        return new SamsangMP3();
        }
        public override IMP4  CreateMP4()
        {
 	        return new SamsangMP4();
        }
    }

    //MP3的抽象产品
    public interface IMP3
    {
        void Listen();
    }

    //MP4的抽象产品
    public interface IMP4
    {
        void Listen();
        void Look();
    }

    //MP3的实际产品(索尼的)
    public class SonyMP3 : IMP3
    {
        public void Listen()
        {
            Console.WriteLine("索尼 MP3 可以听");
        }
    }

    //MP3的实际产品(三星的)
    public class SamsangMP3 : IMP3
    {
        public void Listen()
        {
            Console.WriteLine("三星 MP3 可以听");
        }
    }

    //MP4的实际产品(索尼的)
    public class SonyMP4 : IMP4
    {
        public void Listen()
        {
            Console.WriteLine("索尼 MP4 可以听");
        }
        public void Look()
        {
            Console.WriteLine("索尼 MP4 可以看");
        }
    }

    //MP4的实际产品(三星的)
    public class SamsangMP4 : IMP4
    {
        public void Listen()
        {
            Console.WriteLine("三星 MP4 可以听");
        }
        public void Look()
        {
            Console.WriteLine("三星 MP4 可以看");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值