110,536
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 打印机抽象类
/// </summary>
public abstract class PrintBasic
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 打印方法
/// </summary>
public abstract void Print();
}
/// <summary>
/// A打印机
/// </summary>
public class PrintA : PrintBasic
{
public PrintA(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机",this.Name));
}
}
/// <summary>
/// B打印机
/// </summary>
public class PrintB : PrintBasic
{
public PrintB(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机", this.Name));
}
}
/// <summary>
/// C打印机
/// </summary>
public class PrintC : PrintBasic
{
public PrintC(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机", this.Name));
}
}
public delegate void delePrint();
/// <summary>
/// 计算机
/// </summary>
public class Computer
{
public event delePrint Print;
public void CmdPrint()
{
Console.WriteLine("start print.....");
if (Print != null)
{
Print();
}
Console.WriteLine("end print.....");
}
}
/// <summary>
/// 打印机工厂类
/// </summary>
public class PrintFactory
{
public PrintBasic GetPrint(string name)
{
PrintBasic print;
switch (name)
{
case "A":
print = new PrintA(name);
break;
case "B":
print = new PrintB(name);
break;
case "C":
print = new PrintC(name);
break;
default:
print = new PrintA(name);
break;
}
return print;
}
}
class Program
{
static void Main(string[] args)
{
PrintBasic pb = new PrintFactory().GetPrint("A");
Computer cp = new Computer();
cp.Print += new delePrint(pb.Print);
cp.CmdPrint();
Console.Read();
}
}