C#设计模式--工厂方法模式

0.C#设计模式-简单工厂模式

设计模式:

工厂方法模式(Factory Method Pattern)

介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用到的类,做运算。而工厂方法模式则是他的一个的扩展,不在工厂类中做区分从而创建对应的类,而是把这个选择决策权力交给使用类的用户决定。可扩展性比简单工厂模式要好很多

工厂方法模式类图:

工厂方法模式C#代码举例:

MobilePhone类手机类

1  public abstract class MobilePhone
2     {
3         public abstract void print();
4     }

Iphone 类 苹果手机类

1 public class Iphone : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是苹果手机!");
6         }
7     }

XiaoMI 类 小米手机类

1  public class XiaoMI:MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是小米手机");
6         }
7     }

SmarTisan类 锤子手机类

1 public class SmarTisan : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是锤子手机!");
6         }
7     }

MobilePhoneFactory 类 手机工厂类

1  public abstract class MobilePhoneFactory
2     {
3         public abstract MobilePhone Create();
4     }

IphoneFactory 类 苹果手机工厂类

1  public class IphoneFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new Iphone();
6         }
7     }

XiaoMiFactory类 小米手机工厂类

1  public class XiaoMiFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new XiaoMI();
6         }
7     }

SmarTisanFactory类 锤子手机工厂类

1  public class SmarTisanFactory:MobilePhoneFactory
2     {
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     }
复制代码

运行结果:

 

源码工程文件

 

posted @   JiYF  阅读(2413)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示