C# 实现抽象工厂模式

来源:互联网 发布:平面设计必学软件 编辑:程序博客网 时间:2024/05/17 21:55

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

原创粉丝点击