windows程序设计课程作业一

本文详细介绍了如何使用C#通过接口IProductionFactory和委托机制来统一管理周黑鸭工厂的产品生产,包括不同工厂的特性和方法实现,展示了接口的规范作用、委托的动态调用以及面向对象编程的多态性
摘要由CSDN通过智能技术生成

文章目录


作业内容

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

  1. 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
  2. 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
  3. 使用委托 ProductionDelegate 定义生产委托。
  4. 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

一、实现的基本思路

1.定义一个委托 ProductionDelegate,用于引用生产方法。
2.定义一个接口 IProductionFactory,其中包含了两个方法 ProduceDuckNeck 和 ProduceDuckWing,用于规范工厂需要实现的生产行为。
3.然后分别定义了三个工厂类 WuhanFactory、NanjingFactory 和 ChangshaFactory,它们分别实现了 IProductionFactory 接口,并实现了接口中定义的生产方法。
4.在 Main 方法中,创建了三个不同工厂的实例,并创建了三个不同的生产委托。然后,通过 += 运算符将对应工厂的生产方法添加到委托的调用列表中,最后调用委托。

二、关键分析

1.接口

1.1接口

1.除显示实现接口外,类中接口实现必须显示声明为public。

2.对接口方法的调用与类中的情况相同。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。

3.接口不是类,所以不能用接口创建对象,即不能用new运算符。

1.2接口的定义

public interface IProductionFactory 定义了一个接口,包含了生产鸭脖和生产鸭翅的方法声明。

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

1.3接口的实现

public class WuhanFactory : IProductionFactory

public class NanjingFactory : IProductionFactory

public class ChangshaFactory : IProductionFactory 分别实现了 IProductionFactory 接口及接口中声明的方法。

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

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

    // 南京工厂只能生产鸭翅
    public class NanjingFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            Console.WriteLine("南京工厂不能生产鸭脖!");
        }

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

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

        public void ProduceDuckWing()
        {
            Console.WriteLine("长沙工厂不能生产鸭翅!");
        }
    }

2.委托

2.1委托

1.使用委托需要三个步骤:声明委托类型,创建委托实例,向委托实例注册方法。

2.委托和重载相反,必须同参不同名。

3.语法:[访问修饰符] event 委托名 事件名; //先有委托名。

2.2委托的定义

public delegate void ProductionDelegate(); 定义了一个委托,用于引用生产方法。

    public delegate void ProductionDelegate();

2.3委托的实现

Main 函数中,通过 ProductionDelegate 委托实例化了三个委托对象,分别是 WuhanNanjingChangsha。这些委托对象都分别关联了对应工厂的生产方法。

ProductionDelegate Wuhan = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
ProductionDelegate Nanjing = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
ProductionDelegate Changsha = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
             


三、代码的实现

1.代码

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

namespace windows第一次课程设计
{
    using System;

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

    // 定义接口
    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()
        {
            Console.WriteLine("南京工厂不能生产鸭脖!");
        }

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

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

        public void ProduceDuckWing()
        {
            Console.WriteLine("长沙工厂不能生产鸭翅!");
        }
    }

  
    internal class Program
    {
        static void Main(string[] args)
        {
                // 创建不同工厂的实例
                WuhanFactory wuhanFactory = new WuhanFactory();
                NanjingFactory nanjingFactory = new NanjingFactory();
                ChangshaFactory changshaFactory = new ChangshaFactory();

                // 创建不同的生产委托
                ProductionDelegate Wuhan = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
                Wuhan += wuhanFactory.ProduceDuckWing;
                Wuhan();

                ProductionDelegate Nanjing = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
                Nanjing += nanjingFactory.ProduceDuckNeck;
                Nanjing();

                ProductionDelegate Changsha = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
                Changsha += changshaFactory.ProduceDuckWing;
                Changsha();

                Console.ReadLine();
            
        }
    }
}

2.结果


总结

在本次课程作业中,我们通过c#用接口委托等方法设计了对周黑鸭工厂产品生产的统一管理的系统。

通过接口定义工厂需要实现的生产方法,使得不同工厂的生产行为具有统一的规范性。同时,通过接口,实现了不同工厂的生产行为的灵活切换和替换,从而提高了系统的可扩展性和可维护性。使用接口也可以实现多态性,允许不同工厂类实现相同的接口方法,但具体实现方式可以不同,从而实现了不同工厂生产不同产品的功能。


通过委托,实现了对方法的动态调用,使得在运行时可以根据需要动态地调用不同的生产方法。

在本次案例中,接口和委托的使用提高了代码的灵活性,同时实现了面向对象编程中的多态性和动态调用等特性,使得代码更加健壮和易于理解。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值