windows程序设计课程作业一

题目:

使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:

1,定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。

2,定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口IProductionFactory,用于具体的生产工厂。

3,使用委托 ProductionDelegate 定义生产委托。

4,在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产

基本思路:

首先定义一个接口IPrpductionFactory,其中接口体内是生产鸭脖和鸭翅的函数声明。然后再上述要求定义武汉工厂WuhanFactory、南京工厂NanjingFactory、长沙工厂ChangshaFactory并继承接口IProductionFactory,接着在定义生产委托ProductionDelegate ,最后再写主函数部分,其中包括创建委托实例,向委托实例注册方法。

代码实现:

定义一个接口IProductionFactory:

public interface IProductionFactory
{
    void ProduceDuckNeck();//生产鸭脖
    void ProduceDuckWing();//生产鸭翅
}//定义接口

定义类 WuhanFactory:

public class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("武汉工厂生产鸭脖");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("武汉工厂生产鸭翅");
    }
}

定义类NanjingFactory:

public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        throw new NotSupportedException("南京工厂不能生产鸭脖");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("南京工厂生产鸭翅");
    }
}

定义类ChangshaFactory:

public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("长沙工厂生产鸭脖");
    }

    public void ProduceDuckWing()
    {
        throw new NotSupportedException("长沙工厂不能生产鸭翅");
    }
}

定义生产委托:

public delegate void ProductionDelegate();//定义生产委托

委托的使用一共有三个步骤:

1,声明委托类型

2,创建委托实例

3,向委托实例注册方法

主函数部分:

    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建工厂实例  
        IProductionFactory wuhanFactory = new WuhanFactory();  
        IProductionFactory nanjingFactory = new NanjingFactory();  
        IProductionFactory changshaFactory = new ChangshaFactory();  
  
        // 创建生产委托实例,绑定工厂的生产方法  
        ProductionDelegate produceDuckNeckDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);  
        ProductionDelegate produceDuckWingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing);  
  
        // 使用委托进行生产  
        produceDuckNeckDelegate();  
        produceDuckWingDelegate();  
  
        // 更改委托的绑定,使其指向长沙工厂生产鸭脖的方法  
        produceDuckNeckDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);  
        produceDuckNeckDelegate();  
        Console.ReadLine();
         
        }
    }
}

代码运行结果:

完整代码:

using System;


namespace 周黑鸭
{
    
    public interface IProductionFactory
    {
        void ProduceDuckNeck();
        void ProduceDuckWing();
    }
    
    public class WuhanFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            Console.WriteLine("武汉工厂生产鸭脖");
        }

        public void ProduceDuckWing()
        {
            Console.WriteLine("武汉工厂生产鸭翅");
        }
    }
  
    public class NanjingFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            throw new NotSupportedException("南京工厂不能生产鸭脖");
        }

        public void ProduceDuckWing()
        {
            Console.WriteLine("南京工厂生产鸭翅");
        }
    }
    //定义ChangshaFactory类并继承接口IProductionFactory
    public class ChangshaFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            Console.WriteLine("长沙工厂生产鸭脖");
        }

        public void ProduceDuckWing()
        {
            throw new NotSupportedException("长沙工厂不能生产鸭翅");
        }
    }

    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 produceDuckNeckDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
            ProductionDelegate produceDuckWingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing); 
            produceDuckNeckDelegate();
            produceDuckWingDelegate();
            produceDuckNeckDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
            produceDuckNeckDelegate();
            Console.ReadLine();
            
          
        }
    }
}

小结:

通过本题,我们深入了解了C#中类,接口以及委托等相关知识。接口的使用减少了代码的编写量,提高了开发效率。通过接口,委托我们实现了在工厂所能生产的产品不同的条件下,周黑鸭对产品生产的统一管理,为周黑鸭产品生产的管理提供了便利。

源码:

周黑鸭 - 代码片段 - Gitee.com

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 23:34:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 23:34:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 23:34:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 23:34:01       18 阅读

热门阅读

  1. 自建ceph存储集群方案之从零到一

    2024-04-08 23:34:01       13 阅读
  2. 机器视觉系统-为什么需要机器视觉光源

    2024-04-08 23:34:01       16 阅读
  3. [算法刷题打卡]Day9

    2024-04-08 23:34:01       11 阅读
  4. 字符串约束

    2024-04-08 23:34:01       12 阅读
  5. Elasticsearch dynamic_templates 实战 通用配置

    2024-04-08 23:34:01       12 阅读
  6. 1.k8s简介

    2024-04-08 23:34:01       12 阅读
  7. Hadoop生态系统主要是什么?

    2024-04-08 23:34:01       16 阅读
  8. 每日一题:C语言经典例题之杨辉三角

    2024-04-08 23:34:01       13 阅读