类图 abstract class FactoryParttern { public abstract ICommodity MakeCommodity(Commodity commodity); public ICommodity Make(Commodity commodity) { return MakeCommodity(commodity); } } 工厂方法抽象 using System; class ChinaFactory : FactoryParttern { public override ICommodity MakeCommodity(Commodity commodity) { switch (commodity) { case Commodity.Cap: return new Cap(); break; case Commodity.Shoes: return new Shoes(); break; case Commodity.Sock: return new Sock(); break; case Commodity.Trousers: return new Trousers(); break; default: throw new Exception("参数无效"); } } } 工厂方法抽象实现A interface ICommodity { void Print(); } 产品接口 using System; class Cap : ICommodity { public Cap() { } public void Print() { Console.WriteLine("Im a Cap!"); } } 产品实现A using System; class Shoes:ICommodity { public Shoes() { } public void Print() { Console.WriteLine("Im a Shoes!"); } } 产品实现B using System; class Sock : ICommodity { public Sock() { } public void Print() { Console.WriteLine("Im a Sock!"); } } 产品实现C using System; class Trousers : ICommodity { public Trousers() { } public void Print() { Console.WriteLine("Im Trousers!"); } } 产品实现D using System; using System.Collections.Generic; using System.Text; namespace FactoryPattern { class Program { static void Main(string[] args) { ICommodity commodity; ChinaFactory cf = new ChinaFactory(); commodity = cf.Make(Commodity.Sock); commodity.Print(); Console.ReadKey(); } } } 调用者