首页 > 代码库 > C#设计模式--工厂方法模式
C#设计模式--工厂方法模式
设计模式:
工厂方法模式(Factory Method Pattern)
介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用到的类,做运算。而工厂方法模式则是他的一个的扩展,不在工厂类中做区分从而创建对应的类,而是把这个选择决策权力交给使用类的用户决定。可扩展性比简单工厂模式要好很多
工厂方法模式类图:
简单工厂模式C#代码举例:
MobilePhone类手机类
1 public abstract class MobilePhone2 {3 public abstract void print();4 }
Iphone 类 苹果手机类
1 public class Iphone : MobilePhone2 {3 public override void print()4 {5 Console.WriteLine("我是苹果手机!");6 }7 }
XiaoMI 类 小米手机类
1 public class XiaoMI:MobilePhone2 {3 public override void print()4 {5 Console.WriteLine("我是小米手机");6 }7 }
SmarTisan类 锤子手机类
1 public class SmarTisan : MobilePhone2 {3 public override void print()4 {5 Console.WriteLine("我是锤子手机!");6 }7 }
MobilePhoneFactory 类 手机工厂类
1 public abstract class MobilePhoneFactory2 {3 public abstract MobilePhone Create();4 }
IphoneFactory 类 苹果手机工厂类
1 public class IphoneFactory:MobilePhoneFactory2 {3 public override MobilePhone Create()4 {5 return new Iphone();6 }7 }
XiaoMiFactory类 小米手机工厂类
1 public class XiaoMiFactory:MobilePhoneFactory2 {3 public override MobilePhone Create()4 {5 return new XiaoMI();6 }7 }
SmarTisanFactory类 锤子手机工厂类
1 public class SmarTisanFactory:MobilePhoneFactory2 {3 public override MobilePhone Create()4 {5 return new SmarTisan();6 }7 }
测试
(即使每次增加新的品牌,只需要增加新品牌的类,以及对应工厂即可使用,方便扩展)
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //创建苹果手机工厂 6 MobilePhoneFactory mobilePhoneFactoryIphone = new IphoneFactory(); 7 //苹果手机工厂创建手机 8 MobilePhone mobilePhoneIphone = mobilePhoneFactoryIphone.Create(); 9 //由苹果工厂创建苹果手机10 mobilePhoneIphone.print();11 12 13 //小米工厂生产小米手机14 MobilePhoneFactory mobilePhoneFactoryXiaoMi = new XiaoMiFactory();15 MobilePhone mobilePhoneXiaoMi = mobilePhoneFactoryXiaoMi.Create();16 mobilePhoneXiaoMi.print();17 18 19 //锤子手机工厂生产锤子手机20 MobilePhoneFactory mobilePhoneFactorySmarTisan = new SmarTisanFactory();21 MobilePhone mobilePhoneSmarTisan = mobilePhoneFactorySmarTisan.Create();22 mobilePhoneSmarTisan.print();23 24 Console.Read();25 26 }27 }
运行结果:
源码工程文件
C#设计模式--工厂方法模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。