首页 > 代码库 > 设计模式系列之-工厂方法
设计模式系列之-工厂方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using DPC.Domain;namespace DPC.CreateModel.FactoryMethod{ class Program { static void Main(string[] args) { //创建生产小米手机的工厂 IMobilePhoneFactory xiaomiFactory = new XiaoMiFactory(); MobilePhone xiaomi = xiaomiFactory.CreateMobilePhone(); //调用工厂对象生产手机的方法 xiaomi.Show(); Console.WriteLine(); //创建生产苹果手机的工厂 IMobilePhoneFactory iphoneFactory = new IPhoneFactory(); MobilePhone iphone = iphoneFactory.CreateMobilePhone(); //调用工厂对象生产手机的方法 iphone.Show(); //Console.WriteLine(); //工厂方法与简单工厂结合使用 //MobliePhoneFactoryHelper.GetPhone("苹果").Show(); //MobliePhoneFactoryHelper.GetPhone("小米").Show(); Console.ReadKey(); } } #region 工厂方法 //工厂方法模式是对简单工厂模式的改造和升级,在工厂模式的基础上对简单工厂做了更高层次的抽象,抽象出工厂接口。 //工厂方法模式符合对修改关闭、对扩展开放的原则,具有更好的扩展性。 //但工厂方法模式引入了更高的代码复杂度,学习和调用成本更高,且创建每个类的实例都需要相关的工厂类配合,所以某些情况下需要增加很多相关类。 //同时简单工厂和工厂方法结合可降低调用方的复杂度。 /// <summary> /// 手机工厂接口(只要实现了该接口的类就是具备生产某种手机能力的工厂,这里有可能是苹果手机或者小米手机工厂) /// </summary> public interface IMobilePhoneFactory { MobilePhone CreateMobilePhone(); } public class IPhoneFactory : IMobilePhoneFactory { public MobilePhone CreateMobilePhone() { return new IPhone("iphone6 plus", 6500); } } public class XiaoMiFactory : IMobilePhoneFactory { public MobilePhone CreateMobilePhone() { return new XiaoMi("小米2代", 2500); } } #endregion #region 工厂方法与简单工厂结合 public class MobliePhoneFactoryHelper { public static MobilePhone GetPhone(string name) { IMobilePhoneFactory factory = null; switch (name) { case "苹果": factory = new IPhoneFactory(); return factory.CreateMobilePhone(); case "小米": factory = new XiaoMiFactory(); return factory.CreateMobilePhone(); default: throw new NotImplementedException("不存在的品牌"); } } } #endregion}
设计模式系列之-工厂方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。