现在的位置: 首页 > 综合 > 正文

C# 实现抽象工厂模式

2013年10月20日 ⁄ 综合 ⁄ 共 1336字 ⁄ 字号 评论关闭

using System;

namespace ConsoleApplication2
{
public interface FightIname
{
   void Shoot();
}
public interface PeopleIname
{
   void LoadPeople();
}

public class FightTank:FightIname
{

   public void Shoot()
   {
    Console.WriteLine("Tank Shoot!");
   }

}
public class PeopleTank:PeopleIname
{

   public void LoadPeople()
   {
    Console.WriteLine("LoadPeople Tank!");
   }

}

public class FightPlane:FightIname
{

   public void Shoot()
   {
    Console.WriteLine("Plane Shoot!");
   }
}
public class PeoplePlane:PeopleIname
{
   public void LoadPeople()
   {
    Console.WriteLine("LoadPeople Plane!");
   }

}
public class TankFactory:AbsFactory
{
   public override FightIname CreateFight()
   {
    return new FightTank();
   }
   public override PeopleIname CreatePeople()
   {
    return new PeopleTank();
   }
}

public class PlaneFactory:AbsFactory
{
   public override FightIname CreateFight()
   {
    return new FightPlane();
   }
   public override PeopleIname CreatePeople()
   {
    return new PeoplePlane();
   }
}
public abstract class AbsFactory
{
   public static AbsFactory CreateFactory(string str)
   {
    switch(str)
    {
     case "Tank":
      return new TankFactory();
     case "Plane":
      return new PlaneFactory();
     default:
      return null;
    }
   }
   public abstract FightIname CreateFight();
   public abstract PeopleIname CreatePeople();
}
public class Test
{
   public static void Main()
   {
    AbsFactory abc = AbsFactory.CreateFactory("Tank");
    FightIname f = abc.CreateFight();
    f.Shoot();
   
   }
}
}

抱歉!评论已关闭.