C# 设计模式-工厂方法(Factory Method)
来源:互联网 发布:不用网络看小说 编辑:程序博客网 时间:2024/06/07 01:16
以下是个人观点:
用不同具体工厂创建不同的具体对象,代码仅处理具体对象的父类(或接口)
声明工厂方法的抽象父类(类似于抽象工厂)、具体工厂、具体对象的父类、具体对象
抽象工厂和工厂方法的区别:
- 抽象工厂使用工厂方法创建一系列的对象
- 工厂方法通常只创建一个对象
using System;namespace FactoryMethod{ /// <summary> /// 声明工厂方法的抽象父类(类似于抽象工厂) /// </summary> abstract class Creator { public abstract Word CreateWord(); } /// <summary> /// 创建A单词对象的工厂A /// </summary> class AFactory : Creator { public override Word CreateWord() { //创建A单词对象 return new AWord(); } } /// <summary> /// 创建BWord对象的工厂B /// </summary> class BFactory : Creator { public override Word CreateWord() { //创建B单词对象 return new BWord(); } } /// <summary> /// 抽象单词类 /// </summary> abstract class Word { public abstract void Write(); } /// <summary> /// A单词具体类 /// </summary> class AWord : Word { public override void Write() { Console.WriteLine("我是AWord对象"); } } /// <summary> /// B单词具体类 /// </summary> class BWord:Word { public override void Write() { Console.WriteLine("我是BWord对象"); } }}
调用:
namespace FactoryMethod{ class Program { static void Main(string[] args) { Word word; Creator AFactory = new AFactory(); //创建A单词对象 word = AFactory.CreateWord(); word.Write(); Creator BFactory = new BFactory(); //创建B单词对象 word = BFactory.CreateWord(); word.Write(); } }}
结果:
参考资料:《设计模式-可复用面对对象软件的基础》
阅读全文