定義工廠方法介面,延遲具體產品實例化到子類別:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.FactoryMethod
{
///
/// 抽象 Message 工廠(Creator)
///
public abstract class AbstractMessageFactory
{
///
/// 工廠方法
///
/// AbstractMessage
public abstract AbstractMessage CreateMessage();
}
}
實作工廠方法,返回 SQL 具體產品:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.FactoryMethod
{
///
/// SqlMessage 工廠(ConcreteCreator)
///
public class SqlMessageFactory : AbstractMessageFactory
{
///
/// 實作工廠方法,返回 SqlMessage 物件
///
/// SqlMessage 實例
public override AbstractMessage CreateMessage()
{
return new SqlMessage();
}
}
}
實作工廠方法,返回 XML 具體產品:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.FactoryMethod
{
///
/// XMLMessage 工廠(ConcreteCreator)
///
public class XMLMessageFactory : AbstractMessageFactory
{
///
/// 實作工廠方法,返回 XMLMessage 物件
///
/// XMLMessage 實例
public override AbstractMessage CreateMessage()
{
return new XMLMessage();
}
}
}
new SqlMessageFactory() 或 new XMLMessageFactory())。CreateMessage() 獲得抽象產品 AbstractMessage。Insert()、Get() 等業務方法。