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

C# 設計模式實戰:Prototype 原型模式完整解析(二)

     編輯:關於C語言

程式碼執行結果

原型模式執行結果

代碼角色說明

  • Enemy:抽象原型,定義共同屬性與 Clone() 介面
  • FootMan:具體原型,實作具體參數與克隆邏輯
  • GameScene:Client,透過複製原型建立敵人群組,零依賴具體類別

核心機制解析

  • Clone(bool isDeepCopy):參數控制拷貝深度
  • 深拷貝實作:BinaryFormatter + MemoryStream 序列化/反序列化,確保 Location 等參考型別獨立副本
  • 效能優勢:建構函式 Thread.Sleep(1000) 模擬昂貴初始化,三個敵人僅耗費一次建構時間
  • 獨立性驗證:修改單一敵人位置不影響其他實例

深拷貝程式碼片段


public override Enemy Clone(bool isDeepCopy)
{
    FootMan footman;
    if (isDeepCopy)
    {
        MemoryStream ms = new MemoryStream();
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.Serialize(ms, this);
        ms.Position = 0;
        footman = (FootMan)formatter.Deserialize(ms);
    }
    else
        footman = (FootMan)this.MemberwiseClone();
    return footman;
}

執行流程驗證

  1. 建立原型 FootMan(5, 4, new Location(100,200)) — 耗時 1000ms
  2. Clone 三次建立小隊:兩側步兵 + 一精英(屬性翻倍)
  3. 總耗時約 1000ms(非 3000ms),證明避免重複初始化
  4. 深拷貝確保三個實例 Location 獨立,互不干擾
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved