Windows程序设计课程作业-1

1. 作业内容

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

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

2. 设计思路分析

  •  在 C# 中,接口和委托都是实现代码抽象和分离的重要工具。
  •  接口定义了一组方法规范,但不提供实现。它们允许我们定义可以由多个类实现的契约,这些类可以有不同的行为但共享相同的方法签名。而在本项目中IProductionFactory 接口将确保所有工厂类都实现生产鸭脖和鸭翅的方法,但每个工厂可以有其独特的生产过程。
  •  委托是一种类型,它安全地封装了一个方法的引用,允许将方法作为参数传递,或者将其赋给一个变量。而在本项目在的产管理系统中,委托可以用来引用生产方法,允许在运行时动态地更改调用的方法,增加了程序的灵活性。
  •  在本项目中结合使用接口和委托可以创建一个灵活且可扩展的系统。接口IProductionFactory定义了必须实现的方法,而委托ProductionDelegate则允许在运行时动态地改变对象的行为。这样,就可以根据客户需要轻松地添加新的工厂类型,或者改变生产策略,而不需要修改现有的代码基础。

3. 代码实现

 3.1接口定义

public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

 3.2工厂类实现

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

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

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

    public void ProduceDuckWing()
    {
        throw new NotImplementedException("长沙工厂不能生产鸭翅。");
    }
}
// 创建工厂实例
IProductionFactory wuhan = new WuhanFactory();
IProductionFactory nanjing = new NanjingFactory();
IProductionFactory changsha = new ChangshaFactory();

 在这里,我们创建了三个工厂类:WuhanFactory、NanjingFactory 和 ChangshaFactory,每个类都通过 IProductionFactory 接口来实现。由于不同工厂能够生产的产品不同,我们通过用不同方式实现接口方法来体现他们在生产上的差异:

 若是能够实现生产该类产品,则正常输出语句xxx 工厂生产xx。
 若是不能生产该产品,则抛出NotImplementedException异常,异常信息为xxx 不能生产xx。

 3.3委托的定义

public delegate void ProductionDelegate();

 定义一个名为ProductionDelegate的委托,它不带参数且不返回值,用于封装生产方法的调用。

3.4异常类处理

// 异常处理
Console.WriteLine("武汉工厂生产:");
try
{
    wuhanProduction();
}
catch (NotImplementedException e)
{
    Console.WriteLine($"生产异常: {e.Message}");
}
Console.WriteLine("");
Console.WriteLine("南京工厂生产:");

try
{
    nanjingProduction();
}
catch (NotImplementedException e)
{
    Console.WriteLine($"生产异常: {e.Message}");
}
Console.WriteLine("");
Console.WriteLine("长沙工厂生产:");
try
{
    changshaProduction();
}
catch (NotImplementedException e)
{
    Console.WriteLine($"生产异常: {e.Message}");
}

  通过分别对每个工厂进行try和catch语句块来实现订单的执行,若在异常时也会及时抛出异常信息。

3.5输出结果

在这里插入图片描述

4.源代码

 https://gitee.com/qk1xcn/windows.git

5.总结

 通过本题,我对c#中的接口和委托有了更深的理解。在 C# 中,接口是定义一组方法签名的契约,而类(Class)则是接口契约的具体实现。接口为类提供了一个模板,使得不同的类可以共享同样的接口,但具有不同的实现。这样,我们可以在不同的上下文中重用接口,而不必关心具体的实现细节。委托是 C# 中的一种类型,它可以引用具有特定参数列表和返回类型的方法。委托类似于 C 或 C++ 中的函数指针,但它是类型安全的。委托被用来实现事件和回调方法,它允许方法作为参数传递给其他方法,是实现事件驱动编程的基础。
 在本题中,IProductionFactory 接口定义了两个方法:ProduceDuckNeck 和 ProduceDuckWing。WuhanFactory、NanjingFactory 和 ChangshaFactory 类分别实现了这个接口。ProductionDelegate 委托被用来引用生产方法。在 Main 函数中,我们创建了不同工厂的实例,并通过委托调用它们的生产方法。这样,我们就可以灵活地管理不同工厂的生产过程,而不必关心具体的实现细节。这也展示了接口和委托在 C# 中的强大功能和灵活性。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值