设计模式——工厂模式
一、简单工厂模式
public enum From { HeBei, ChongQing, } public abstract class DoThings { public abstract void GoShopping(); public abstract void NiDongDe(); } public class HB : DoThings { public override void GoShopping() { Console.WriteLine("买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和河北妹子做想做的事。。。"); } } public class CQ : DoThings { public override void GoShopping() { Console.WriteLine("还是 买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和重庆辣妹子做想做的事。。。"); } } public class CreateNiuFactory { public static DoThings CreateNiu(From from) { switch (from) { case From.ChongQing: return new CQ(); case From.HeBei: return new HB(); } return null; } }
class Program { static void Main() { DoThings dt = CreateNiuFactory.CreateNiu(From.HeBei); dt.GoShopping(); dt.NiDongDe(); DoThings dt2 = CreateNiuFactory.CreateNiu(From.ChongQing); dt2.GoShopping(); dt2.NiDongDe(); Console.WriteLine(); Console.ReadKey(); } }

二、工厂模式
public enum From { HeBei, ChongQing, } public abstract class DoThings { public abstract void GoShopping(); public abstract void NiDongDe(); } public class HB : DoThings { public override void GoShopping() { Console.WriteLine("买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和河北妹子做想做的事。。。"); } } public class CQ : DoThings { public override void GoShopping() { Console.WriteLine("还是 买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和重庆辣妹子做想做的事。。。"); } } public interface ICreateNiuFactory { DoThings CreateNiu(); } public class HBNiu : ICreateNiuFactory { public DoThings CreateNiu() { return new HB(); } } public class CQNiu : ICreateNiuFactory { public DoThings CreateNiu() { return new CQ(); } }
class Program { static void Main() { DoThings dt = new HBNiu().CreateNiu(); dt.GoShopping(); dt.NiDongDe(); DoThings dt2 = new CQNiu().CreateNiu(); dt2.GoShopping(); dt2.NiDongDe(); Console.WriteLine(); Console.ReadKey(); } }

三、抽象工厂模式
public enum From { HeBei, ChongQing, } public abstract class DoThings { public abstract void GoShopping(); public abstract void NiDongDe(); } public class HB : DoThings { public override void GoShopping() { Console.WriteLine("买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和河北妹子做想做的事。。。"); } } public class CQ : DoThings { public override void GoShopping() { Console.WriteLine("还是 买买买!吃吃吃!"); } public override void NiDongDe() { Console.WriteLine("和重庆辣妹子做想做的事。。。"); } } public interface ICreateNiuFactory { DoThings CreateNiu(); IFather CreateFa(); } public interface IFather { void Say(); } public class HBFather : IFather { public void Say() { Console.WriteLine("河北姑娘的父亲要说些什么"); } } public class CQFather : IFather { public void Say() { Console.WriteLine("重庆辣妹子的父亲要说些什么"); } } public class HBNiu : ICreateNiuFactory { public DoThings CreateNiu() { return new HB(); } public IFather CreateFa() { return new HBFather(); } } public class CQNiu : ICreateNiuFactory { public DoThings CreateNiu() { return new CQ(); } public IFather CreateFa() { return new CQFather(); } }
class Program { static void Main() { DoThings dt = new HBNiu().CreateNiu(); dt.GoShopping(); dt.NiDongDe(); new HBNiu().CreateFa().Say(); DoThings dt2 = new CQNiu().CreateNiu(); dt2.GoShopping(); dt2.NiDongDe(); new CQNiu().CreateFa().Say(); Console.WriteLine(); Console.ReadKey(); } }

浙公网安备 33010602011771号