工厂方法模式

       工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

       

       故事:雷锋依然在人间

       小菜班里有个叫薛磊风的同学,大学期间一直在帮助一个老人,说自己是学雷锋,但是这段时间他出事受伤了,希望班里的同学能帮忙照顾老人。

Leifeng.cs

复制代码
 1 namespace FactoryMethodPattern
 2 {
 3     //雷锋类
 4     class Leifeng
 5     {
 6         public void Sweep()
 7         {
 8             Console.WriteLine("扫地");
 9         }
10         public void Wash()
11         {
12             Console.WriteLine("洗衣");
13         }
14         public void BuyRice()
15         {
16             Console.WriteLine("买米");
17         }
18     }
19 
20     //学雷锋的大学生类
21     class Undergraduate : Leifeng { }
22     //社区志愿者类
23     class Volunteer : Leifeng { }
24 
25 
26 
27     //雷锋工厂
28     interface IFactory
29     {
30         Leifeng CreateLeifeng();
31     }
32 
33     //学雷锋的大学生工厂
34     class UndergraduateFactory : IFactory
35     {
36         public Leifeng CreateLeifeng()
37         {
38             return new Undergraduate();
39         }
40     }
41     //社区志愿者工厂
42     class VolunteerFactory : Leifeng
43     {
44         public Leifeng CreateLeifeng()
45         {
46             return new Volunteer();
47         }
48     }
49 }
复制代码

 

Program.cs

复制代码
 1 namespace FactoryMethodPattern
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             IFactory factory = new UndergraduateFactory();  //换成社区志愿者,改这里就可以了
 8             Leifeng student = factory.CreateLeifeng();
 9 
10             student.BuyRice();
11             student.Sweep();
12             student.Wash();
13 
14             Console.Read();
15         }
16     }
17 }
复制代码

 

posted @   一纸年华  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示