C# 工厂方法模式

[复制链接]
发表于 2026-2-14 05:12:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
栏目总目次

概念

工厂方法模式是一种创建型计划模式,它界说了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中举行。这种模式的告急目标是将对象的创建与利用解耦,使得体系更加机动和可扩展。
脚色


  • Product(产物脚色):界说了产物的接口,是工厂方法模式所创建对象的超范例,也就是产物对象的共同父类或接口。
  • Concrete Product(详细产物脚色):实现了Product接口的详细类,被详细工厂类所创建。
  • Creator(创建者脚色):声明确工厂方法,该方法是一个返回Product范例对象的方法,但返回的Product范例对象是在子类中实现的。通常还提供一个用于创建产物对象的接口。
  • Concrete Creator(详细创建者脚色):实现了Creator接口中界说的工厂方法,返回一个Concrete Product实例。
利益


  • 解耦:将产物的创建与利用解耦,使得体系更加机动和可扩展。
  • 符合开闭原则:新增产物类时,无需修改工厂类代码,只需新增详细产物类和详细工厂类即可。
  • 进步机动性:通过子类来决定创建哪个详细产物对象,可以在运行时动态地决定创建哪种产物对象。
应用场景


  • 当一个类不知道它所必须创建的对象的类时。
  • 当一个类盼望由它的子类来指定它所创建的对象时。
  • 当类将创建对象的职责委托给多个资助子类中的某一个,而且你盼望将哪一个资助子类是署理者这一信息局部化时。
示例代码

  1. // Product 角色
  2. public interface IDocument
  3. {
  4.     void Display();
  5. }
  6. // Concrete Product 角色
  7. public class TextDocument : IDocument
  8. {
  9.     public void Display()
  10.     {
  11.         Console.WriteLine("Displaying Text Document");
  12.     }
  13. }
  14. public class PDFDocument : IDocument
  15. {
  16.     public void Display()
  17.     {
  18.         Console.WriteLine("Displaying PDF Document");
  19.     }
  20. }
  21. // Creator 角色
  22. public interface IDocumentFactory
  23. {
  24.     IDocument CreateDocument();
  25. }
  26. // Concrete Creator 角色
  27. public class TextDocumentFactory : IDocumentFactory
  28. {
  29.     public IDocument CreateDocument()
  30.     {
  31.         return new TextDocument();
  32.     }
  33. }
  34. public class PDFDocumentFactory : IDocumentFactory
  35. {
  36.     public IDocument CreateDocument()
  37.     {
  38.         return new PDFDocument();
  39.     }
  40. }
  41. // 客户端代码
  42. class Program
  43. {
  44.     static void Main(string[] args)
  45.     {
  46.         IDocumentFactory factory1 = new TextDocumentFactory();
  47.         IDocument doc1 = factory1.CreateDocument();
  48.         doc1.Display(); // 输出:Displaying Text Document
  49.         IDocumentFactory factory2 = new PDFDocumentFactory();
  50.         IDocument doc2 = factory2.CreateDocument();
  51.         doc2.Display(); // 输出:Displaying PDF Document
  52.     }
  53. }
复制代码
总结

工厂方法模式是一种非常有效的创建型计划模式,它通过界说一个创建对象的接口(即工厂接口),但将详细创建对象的任务交给子类去完成。这种模式的告急长处在于它将对象的创建与利用分离,低沉了体系的耦合度,增长了体系的机动性和可扩展性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表