首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:工廠方法模式具體產品類別實作 (3/4)

     編輯:關於C語言

具體產品:SqlMessage

實作抽象產品定義的介面,提供 SQL 方式的具體操作邏輯:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.FactoryMethod
{
    /// 
    /// Sql 方式操作 Message(ConcreteProduct)
    /// 
    public class SqlMessage : AbstractMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public override List<MessageModel> Get()
        {
            List<MessageModel> l = new List<MessageModel>();
            l.Add(new MessageModel("SQL方式獲取Message", DateTime.Now));
            return l;
        }

        /// 
        /// 插入 Message
        /// 
        /// Message 實體物件
        /// 是否成功
        public override bool Insert(MessageModel mm)
        {
            // 程式碼略
            return true;
        }
    }
}

具體產品:XMLMessage

實作相同介面,提供 XML 方式的具體操作邏輯:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.FactoryMethod
{
    /// 
    /// XML 方式操作 Message(ConcreteProduct)
    /// 
    public class XMLMessage : AbstractMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public override List<MessageModel> Get()
        {
            List<MessageModel> l = new List<MessageModel>();
            l.Add(new MessageModel("XML方式獲取Message", DateTime.Now));
            return l;
        }

        /// 
        /// 插入 Message
        /// 
        /// Message 實體物件
        /// 是否成功
        public override bool Insert(MessageModel mm)
        {
            // 程式碼略
            return true;
        }
    }
}

具體產品設計要點

  • 介面一致性:兩者均繼承 AbstractMessage,實作 Get() 與 Insert() 抽象方法。
  • 行為差異化:雖然介面相同,但內部實作邏輯針對不同存儲介質(SQL Server vs XML 檔案)優化。
  • 可互換性:客戶端透過 AbstractMessage 參考操作,運行時可透明切換 SQL/XML 實作。

與簡單工廠模式差異

工廠方法模式將創建責任委派給子類別(具體工廠),而非集中在單一工廠類別中。這使得新增產品類型時無需修改現有工廠代碼,更符合開放封閉原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved