题目
使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。
定义接口 IProductionFactory
定义类 WuhanFactory NanjingFactory ChangshaFactory分别实现接口 IProductionFactory
使用委托 Production Delegate定义生产委托。
在 Main函数中,创建不同工厂的实例,并通过生产委托进行生产。用于具体的生产工厂n包含生产鸭脖和鸭翅 的方法
主体思路
1.建立接口
2.设置工厂类并继承接口
3.定义内部函数
4.创建生产委任
5.实现
一.接口
1.接口的定义
interface IProductionFactory
{
// 生产鸭脖的方法
void ProduceDuckNeck();
// 生产鸭翅的方法
void ProduceDuckWing();
}
2.接口的意义
-
多态性:通过接口,不同的类可以实现相同的接口,并以统一的方式被使用。使得我们可以编写通用的代码来处理实现了特定接口的任何对象,而不需要关心它们的具体类型。
-
定义契约:接口定义了一组方法和属性的契约,任何实现该接口的类都必须遵守这个契约。这确保了使用接口的代码可以依赖于一组预定义的行为,从而提高了代码的可预测性和可靠性。
-
模块化设计:通过定义和使用接口,我们可以将软件系统划分为更小、更独立的模块。每个模块可以专注于实现其特定的功能,并通过接口与其他模块进行交互。
二.工厂类
创建类之后通过继承接口来实现功能,从而来获得不同的权限,解决实际问题。
下面是建立的三个工厂类
1.武汉工厂
//武汉工厂
public class WuhanFactory: IProductionFactory
{
public void ProduceDuckNeck(){ Console.WriteLine("武汉工厂生产鸭脖"); }
public void ProduceDuckWing() { Console.WriteLine("武汉工厂生产鸭翅"); }
}
2.南京工厂
//南京工厂
public class NanjingFactory:IProductionFactory
{
public void ProduceDuckNeck() { Console.WriteLine("南京工厂不生产鸭脖"); }
public void ProduceDuckWing() { Console.WriteLine("南京工厂生产鸭翅"); }
}
3.长沙工厂
//长沙工厂
public class ChangshaFactory:IProductionFactory
{
public void ProduceDuckNeck() { Console.WriteLine("长沙工厂生产鸭脖"); }
public void ProduceDuckWing() { Console.WriteLine("长沙工厂不生产鸭翅"); }
}
三.MAIN函数
1.定义生产委托
创建的生产委托
//定义委托
public delegate void ProductionDelegate();
2.建立工厂实例
创建的工厂实例
//工厂实例
//武汉工厂
IProductionFactory wuhanfactory = new WuhanFactory();
//南京工厂
IProductionFactory nanjingfactory = new NanjingFactory();
//长沙工厂
IProductionFactory changshafactory = new ChangshaFactory();
3 .创建生产委托
//创建生产委托
ProductionDelegate w1 = wuhanfactory.ProduceDuckNeck;
ProductionDelegate w2 = wuhanfactory.ProduceDuckWing;
ProductionDelegate n1= nanjingfactory.ProduceDuckWing;
ProductionDelegate n2 = nanjingfactory.ProduceDuckNeck;
ProductionDelegate c1= changshafactory.ProduceDuckNeck;
ProductionDelegate c2 = changshafactory.ProduceDuckWing;
4.进行生产
//进行生产
w1();
w2();
n1();
n2();
c1();
c2();
四.运行结果
五.总结
通过这个题目,在c#中通过对类,接口,委任等的使用实现了对周黑鸭工程的生产产品权限的设置。极大的体现了代码的重用性和模块化。
六.难点
需要通过接口进行不同的的设置,也需要考虑到后面的设置,比如生产扩大,以及扩大权限等。其中委托结构必须谨慎处理,防止出现差错,需要时刻考虑到代码需要有可拓展性,方便后面的权限管理。
七.完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace zhouheiya
{
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
{
//定义委托
public delegate void ProductionDelegate();
static void Main(string[] args)
{ //工厂实例
//武汉工厂
IProductionFactory wuhanfactory = new WuhanFactory();
//南京工厂
IProductionFactory nanjingfactory = new NanjingFactory();
//长沙工厂
IProductionFactory changshafactory = new ChangshaFactory();
//创建生产委托
ProductionDelegate w1 = wuhanfactory.ProduceDuckNeck;
ProductionDelegate w2 = wuhanfactory.ProduceDuckWing;
ProductionDelegate n1= nanjingfactory.ProduceDuckWing;
ProductionDelegate n2 = nanjingfactory.ProduceDuckNeck;
ProductionDelegate c1= changshafactory.ProduceDuckNeck;
ProductionDelegate c2 = changshafactory.ProduceDuckWing;
//进行生产
w1();
w2();
n1();
n2();
c1();
c2();
Console.ReadLine();
}
}
}