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();
}
}
}