window课程作业1

本文详细描述了如何使用C#通过接口IProductionFactory和工厂类设计模式,管理周黑鸭工厂的生产过程,包括武汉、南京和长沙工厂的差异化产品生产。重点介绍了接口的定义、具体工厂类的实现以及委托的使用。
摘要由CSDN通过智能技术生成

目录

1.代码目的:

2具体思路:

3.详细代码:

4.运行结果:

5.小结与难点:


1.代码目的:

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

  1. 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
  2. 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
  3. 使用委托 ProductionDelegate 定义生产委托。

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

2具体思路:

工厂类在面向对象编程中是一个常用的设计模式,它负责创建对象,而无需客户端代码直接关注对象的具体实现。当需要根据具体需求实现接口中的方法时,工厂类能够发挥作用。以下是工厂类如何根据具体需求实现接口中的方法的一些关键点:

定义接口:首先,定义一个接口,它包含需要实现的方法。这个接口定义了一组操作的规范,任何实现这个接口的类都必须提供这些操作的具体实现。

创建具体实现类:接着,创建多个实现了该接口的类,每个类根据自己的需求实现了接口中的方法。这些类代表了不同的具体实现,它们提供了接口所需的功能。

引入工厂类:工厂类的作用是根据客户端的需求,动态地创建并返回实现了特定接口的对象。工厂类通常包含一个或多个静态方法,这些方法根据传入的参数或条件来决定创建哪个实现类的对象。

使用工厂方法创建对象:客户端代码不直接实例化实现类,而是调用工厂类的静态方法。工厂方法根据需求选择合适的实现类,并创建该类的对象。这样,客户端代码只需与接口交互,而无需关心具体的实现类。

扩展性:工厂模式使得系统具有很好的扩展性。当需要添加新的实现时,只需创建新的实现类并实现接口,然后在工厂类中添加相应的逻辑来选择这个新的实现。客户端代码无需修改,因为它们只与接口交互。

依题意,先分别定义接口以及三个工厂(其中三个工厂分别生产不同的东西,例如武汉生产鸭翅合鸭脖,而南京只能生产鸭翅),

最后在主函数类创建工厂实列,调用委托进行生产。

3.详细代码:

//先定义接口iProductionFactory,该接口包含鸭脖鸭翅的生产方法

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("南京工厂生产鸭翅");  
    }  
}  
  //长沙工厂只能生产鸭脖
public class ChangshaFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        Console.WriteLine("长沙工厂生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        throw new NotSupportedException("长沙工厂不能生产鸭翅");  
    }  
}

//定义生产委托

public delegate void ProductionDelegate();

//主函数

class Program  
{  
    static void Main(string[] args)  
    {  
        // 创建工厂实例  
        IProductionFactory wuhanFactory = new WuhanFactory();  
        IProductionFactory nanjingFactory = new NanjingFactory();  
        IProductionFactory changshaFactory = new ChangshaFactory();  
  
        // 定义生产委托  
        ProductionDelegate produceDuckNeckDelegate = new ProductionDelegate(ProduceDuckNeck);  
        ProductionDelegate produceDuckWingDelegate = new ProductionDelegate(ProduceDuckWing);  
  
        // 通过委托进行生产  
        ProduceDuckNeck(wuhanFactory);  
        ProduceDuckNeck(changshaFactory);  
        ProduceDuckWing(wuhanFactory);  
        ProduceDuckWing(nanjingFactory);  

// 生产鸭脖的委托方法  
  static void ProduceDuckNeck(IProductionFactory factory)  
    {  
        factory.ProduceDuckNeck();  
    }  
  
    // 生产鸭翅的委托方法  
    static void ProduceDuckWing(IProductionFactory factory)  
    {  
        factory.ProduceDuckWing();  
    }  
}

4.运行结果:

5.小结与难点:

通过使用工厂类,我们可以轻松地根据具体需求创建不同实现类的对象,而无需在客户端代码中直接处理这些实现类的细节。这提高了代码的模块化和可维护性,使得系统更加灵活和可扩展。

在C#编程语言中,接口、多态、委托和重载是四个重要的概念,它们各自在面向对象编程中扮演着不可或缺的角色。这个题目较为综合的考察了接口,委托,函数重载,类等c#中重要的知识点。使我熟悉了对c#的运用,对这些知识点有了更深一层的了解。这道题目的难点在于分别对三个工厂类不同的定义,其中还涉及到接口的知识,综合难度较高。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值