用C#编码实现对周黑鸭工厂的产品生产统一管理

1.作业要求

使用C#(涉及类、接口、委托)实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

2.思路

定义接口IProductionFactory用来生产鸭脖鸭翅,再在三个工厂类(WuhanFactory、NanjingFactory、ChangshaFactory)中分别具体实现IProductionFactory接口,最后通过委托进行生产。

3.实现

3.1定义生产接口IProductionFactory

IProductionFactory接口中应包含两个函数ProduceDuckNecks()和ProduceDuckWings()分别用于生产鸭脖和鸭翅。

public interface IProductionFactory
{
    void ProduceDuckNecks();
    void ProduceDuckWings();

}

3.2定义三个工厂类并分别具体实现生产接口IProductionFactory

3.2.1武汉工厂

public class WuhanFactory:IProductionFactory
{
    public void ProduceDuckNecks()
    {
        Console.WriteLine("Wuhan factory produces duck necks."); 
    }
    public void ProduceDuckWings()
    {
        Console.WriteLine("Wuhan factory produces duck wings.");
    }
}

武汉工厂既能生产鸭脖,也能生产鸭翅。

3.2.2南京工厂

public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNecks()
    {
        throw new Exception("Nanjing factory can't produce duck necks.");
    }
    public void ProduceDuckWings()
    {
        Console.WriteLine("Nanjing factory produces duck wings.");
    }
}

南京工厂只能生产鸭翅,故南京工厂在调用ProduceDuckNecks()方法时会抛出异常

3.2.3长沙工厂

public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNecks()
    {
        Console.WriteLine("Changsha factory produces duck necks.");
    }
    public void ProduceDuckWings()
    {
        throw new Exception("Changsha factory can't produce duck wings.");
    }
}

长沙工厂只能生产鸭脖,故长沙工厂在调用ProduceDuckWings()方法时会抛出异常

3.3.定义委托用于main函数中的具体生产

public delegate void ProductionDelegate();

3.4main函数

3.4.1创建三个工厂实例

IProductionFactory wuhanfactory = new WuhanFactory();
IProductionFactory nanjingfactory = new NanjingFactory();
IProductionFactory changshafactory = new ChangshaFactory();

3.4.2创建委托实例并调用委托进行生产

ProductionDelegate produce_duck_necks = wuhanfactory.ProduceDuckNecks;
ProductionDelegate produce_duck_wings = wuhanfactory.ProduceDuckWings;
produce_duck_necks();
produce_duck_wings();
produce_duck_wings = nanjingfactory.ProduceDuckWings;
produce_duck_wings();
produce_duck_necks = changshafactory.ProduceDuckNecks;
produce_duck_necks();

3.5完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zhouheiya
{
    public interface IProductionFactory
    {
        void ProduceDuckNecks();
        void ProduceDuckWings();

    }

    public class WuhanFactory:IProductionFactory
    {
        public void ProduceDuckNecks()
        {
            Console.WriteLine("Wuhan factory produces duck necks."); 
        }
        public void ProduceDuckWings()
        {
            Console.WriteLine("Wuhan factory produces duck wings.");
        }
    }

    public class NanjingFactory : IProductionFactory
    {
        public void ProduceDuckNecks()
        {
            throw new Exception("Nanjing factory can't produce duck necks.");
        }
        public void ProduceDuckWings()
        {
            Console.WriteLine("Nanjing factory produces duck wings.");
        }
    }

    public class ChangshaFactory : IProductionFactory
    {
        public void ProduceDuckNecks()
        {
            Console.WriteLine("Changsha factory produces duck necks.");
        }
        public void ProduceDuckWings()
        {
            throw new Exception("Changsha factory can't produce duck wings.");
        }
    }

    public delegate void ProductionDelegate();
    internal class Program
    {
        static void Main(string[] args)
        {
            IProductionFactory wuhanfactory = new WuhanFactory();
            IProductionFactory nanjingfactory = new NanjingFactory();
            IProductionFactory changshafactory = new ChangshaFactory();
            ProductionDelegate produce_duck_necks = wuhanfactory.ProduceDuckNecks;
            ProductionDelegate produce_duck_wings = wuhanfactory.ProduceDuckWings;
            produce_duck_necks();
            produce_duck_wings();
            produce_duck_wings = nanjingfactory.ProduceDuckWings;
            produce_duck_wings();
            produce_duck_necks = changshafactory.ProduceDuckNecks;
            produce_duck_necks();
            Console.ReadLine();
        }
    }
}

3.6运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值