目录
知识要点
使用C#进行编码,运用类、接口、委托以及基本语法和知识,熟悉基础语法并熟练运用。
问题描述
实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅:
①武汉工厂能生生产鸭脖和鸭翅;
②南京工厂只能生产鸭翅;
③长沙工厂只能生产鸭脖。
(先后顺序可进行更改)
基本要求
①定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法;
②定义类WuhanFactory、NanjingFactory、ChangshaFactory分别实现接口IProductionFactory,用于具体的生产工厂;
③使用委托 ProductionDelegate 定义生产委托;
④在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
问题分析
1.找到根基:接口IProductionFactory,建立生产鸭脖和鸭翅的方法,为后面实现接口备用。
interface IProductionFactory //定义接口
{
void ProductNeck();
//定义鸭脖生产方法
void ProductWing();
//定义鸭翅生产方法
}
2.有了根基就要由根基向上延伸枝干:类WuhanFactory、NanjingFactory、ChangshaFactory,分别实现生产鸭脖和鸭翅的方法,以及可以通过委托调用。
class WuhanFactory():IProductionFactory //注意接口使用的方法,下同
{
public void ProductNeck() //实现方法与接口一致注意实现的类型要为public,下同
{ Console.WriteLine("武汉生产鸭脖"); }
public void ProductWing()
{ Console.WriteLine("武汉生产鸭翅"); }
}
class NanjingFactory() : IProductionFactory
{
public void ProductNeck()
{ Console.WriteLine("南京不生产鸭脖"); }
public void ProductWing()
{ Console.WriteLine("南京生产鸭翅"); }
}
class ChangshaFactory() : IProductionFactory
{
public void ProductNeck()
{ Console.WriteLine("长沙生产鸭脖"); }
public void ProductWing()
{ Console.WriteLine("长沙不生产鸭翅"); }
}
3.枝干上已经结满硕果,这时候就要拿出工具:委托ProductionDelegate,定义生产委托,便可通过将类作为事件,访问接口内方法。
public delegate void ProductDelegate();
//定义生产委托
4.前提条件做完了,进入 主Main函数,创建不同工厂的实例,并通过生产委托进行生产。
static void Main(string[] args)
{
IProductionFactory wuhanfactory = new WuhanFactory();
//创建武汉工厂实例
IProductionFactory nanjingfactory = new NanjingFactory();
//创建南京工厂实例
IProductionFactory changshafactory = new ChangshaFactory();
//创建长沙工厂实例
ProductDelegate productDelegate=new ProductDelegate(wuhanfactory.ProductNeck);
//创建生产委托并进行初始化
productDelegate += wuhanfactory.ProductWing;
//调入同类的实现方法
productDelegate += nanjingfactory.ProductWing;
productDelegate += nanjingfactory.ProductNeck;
//同样的方法,也可以调入不同类的方法,下同
productDelegate += changshafactory.ProductWing;
productDelegate += changshafactory.ProductNeck;
productDelegate();
//集中全部方法,类函数形式进行集体调用
}
解决方案
完整代码:
class Program
{
interface IProductionFactory //定义接口
{
void ProductNeck();
//定义鸭脖生产方法
void ProductWing();
//定义鸭翅生产方法
}
class WuhanFactory():IProductionFactory //武汉工厂类定义
{
public void ProductNeck() //鸭脖生产方法定义,下同
{ Console.WriteLine("武汉生产鸭脖"); }
public void ProductWing() //鸭翅生产方法定义,下同
{ Console.WriteLine("武汉生产鸭翅"); }
}
class NanjingFactory() : IProductionFactory //南京工厂类定义
{
public void ProductNeck()
{ Console.WriteLine("南京不生产鸭脖"); }
public void ProductWing()
{ Console.WriteLine("南京生产鸭翅"); }
}
class ChangshaFactory() : IProductionFactory //长沙工厂类定义
{
public void ProductNeck()
{ Console.WriteLine("长沙生产鸭脖"); }
public void ProductWing()
{ Console.WriteLine("长沙不生产鸭翅"); }
}
public delegate void ProductDelegate();
//定义生产委托
static void Main(string[] args)
{
IProductionFactory wuhanfactory = new WuhanFactory();
//创建武汉工厂实例
IProductionFactory nanjingfactory = new NanjingFactory();
//创建南京工厂实例
IProductionFactory changshafactory = new ChangshaFactory();
//创建长沙工厂实例
ProductDelegate productDelegate=new ProductDelegate(wuhanfactory.ProductNeck);
//创建生产委托并进行初始化
productDelegate += wuhanfactory.ProductWing;
//调入同类的实现方法
productDelegate += nanjingfactory.ProductWing;
productDelegate += nanjingfactory.ProductNeck;
//同样的方法,也可以调入不同类的方法,下同
productDelegate += changshafactory.ProductWing;
productDelegate += changshafactory.ProductNeck;
productDelegate();
//集中全部方法,类函数形式进行集体调用
}
}