您的位置:首页 > 编程语言 > C#

C# 设计模式-工厂方法(Factory Method)

2017-12-24 20:47 851 查看
以下是个人观点:

用不同具体工厂创建不同的具体对象,代码仅处理具体对象的父类(或接口)

声明工厂方法的抽象父类(类似于抽象工厂)、具体工厂、具体对象的父类、具体对象

抽象工厂和工厂方法的区别:

抽象工厂使用工厂方法创建一系列的对象

工厂方法通常只创建一个对象

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();
}
}
}


结果:



参考资料:《设计模式-可复用面对对象软件的基础》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息