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

C# 設計模式:享元模式 (2) - 純享元結構性程式碼範例

     編輯:關於C語言

結構性程式碼 (可編譯)

using System;
using System.Collections;

class FlyweightFactory
{
    Hashtable flyweights = new Hashtable();
    public FlyweightFactory()
    {
        flyweights.Add("X", new ConcreteFlyweight());
        flyweights.Add("Y", new ConcreteFlyweight());
        flyweights.Add("Z", new ConcreteFlyweight());
    }
    public Flyweight GetFlyweight(string key) => (Flyweight)flyweights[key];
}
abstract class Flyweight
{
    public abstract void Operation(int extrinsicState);
}
class ConcreteFlyweight : Flyweight
{
    string intrinsicState = "A"; // 內在狀態
    public override void Operation(int extrinsicState)
        => Console.WriteLine($"ConcreteFlyweight: intrinsic {intrinsicState}, extrinsic {extrinsicState}");
}
public class Client
{
    static void Main()
    {
        int extrinsic = 22;
        FlyweightFactory f = new FlyweightFactory();
        Flyweight fx = f.GetFlyweight("X"); fx.Operation(--extrinsic);
        Flyweight fy = f.GetFlyweight("Y"); fy.Operation(--extrinsic);
        Flyweight fz = f.GetFlyweight("Z"); fz.Operation(--extrinsic);
    }
}

執行流程

  1. Client 建立 Factory,取得 X/Y/Z 三個享元 (實際僅 3 實例)。
  2. 每次呼叫 Operation(extrinsicState) 傳入外在狀態 (遞減 22→21→20)。
  3. 享元物件輸出內在狀態 "A" 與當前外在狀態,驗證共享與外在狀態分離。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved