抽象铸币厂(生产money)
public abstract class MoneyMaker
{
public abstract Ten MakeTen();
public abstract Hundred MakeHundred();
}
public class ChinaMoneyMaker : MoneyMaker
{
public override Ten MakeTen()
{
return new RMBTen();
}
public override Hundred MakeHundred()
{
return new RMBHundred();
}
}
public class UsMoneyMaker : MoneyMaker
{
public override Ten MakeTen()
{
return new DollarTen();
}
public override Hundred MakeHundred()
{
return new DollarHundred();
}
}
public abstract class Ten
{
public abstract void Pay();
}
public abstract class Hundred
{
public abstract void Pay();
}
public class RMBTen : Ten
{
public override void Pay()
{
Console.WriteLine("10 RMB have been pay.");
}
}测试程序
public class App
{
public static void Main()
{
MoneyMaker mm = new ChinaMoneyMaker();
Ten t = mm.MakeTen();
t.Pay();
Hundred h = mm.MakeHundred();
h.Pay();
mm = new UsMoneyMaker();
t = mm.MakeTen();
t.Pay();
h = mm.MakeHundred();
h.Pay();
Console.ReadLine();
}
}源程序下载 AbstractFactory Demo

