亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Flyweight模式應(yīng)用實(shí)踐的相關(guān)介紹

 更新時(shí)間:2013年04月12日 17:40:45   作者:  
本篇文章,小編將為大家介紹Flyweight模式應(yīng)用實(shí)踐,有需要的朋友可以參考一下

什么是Flyweight模式?

享元模式(Flyweight Pattern)是一種軟件開發(fā)中的設(shè)計(jì)模式,其主要解決的問題是通過類對(duì)象的共享,來避免大量創(chuàng)建擁有相同內(nèi)容的對(duì)象的開銷??梢院?jiǎn)單理解用空間換取時(shí)間。

舉例說明

一般的設(shè)計(jì)模式解釋中都會(huì)用到如下兩種場(chǎng)景來解釋Flyweight Pattern:

1.GUI字處理軟件中每個(gè)文字都是對(duì)象,緩存這些對(duì)象公用。
2.字符串駐留技術(shù)(String Interning)。
具體實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

/// <summary>
  /// 享元模式Flyweight的實(shí)現(xiàn)
  /// </summary>
  /// <typeparam name="T">Type of object.</typeparam>
  /// <example>
  /// // C# 中數(shù)組是引用類型
  /// var pool = new FlyweightObjectPool byte[] (() => new byte[65535]);
  /// pool.Allocate(1000);
  /// var buffer= pool.Dequeue();
  /// // .. do something here ..
  /// pool.Enqueue(buffer);
  /// </example>
  public class FlyweightObjectPool<T> where T : class
  {
    private readonly Func<T> _factoryMethod;
    private readonly ConcurrentQueue<T> _queue = new ConcurrentQueue<T>();

    /// <summary>
    /// 享元模式Flyweight的實(shí)現(xiàn)
    /// </summary>
    /// <param name="factoryMethod">分配緩存的方法</param>
    public FlyweightObjectPool(Func<T> factoryMethod)
    {
      _factoryMethod = factoryMethod;
    }

    /// <summary>
    /// 分配指定數(shù)量的對(duì)象
    /// </summary>
    /// <param name="count">指定的數(shù)量</param>
    public void Allocate(int count)
    {
      for (int i = 0; i < count; i++)
        _queue.Enqueue(_factoryMethod());
    }

    /// <summary>
    /// 緩存一個(gè)對(duì)象
    /// </summary>
    /// <param name="buffer">對(duì)象</param>
    public void Enqueue(T buffer)
    {
      _queue.Enqueue(buffer);
    }

    /// <summary>
    /// 獲取一個(gè)對(duì)象
    /// </summary>
    /// <returns>對(duì)象</returns>
    public T Dequeue()
    {
      T buffer;
      return !_queue.TryDequeue(out buffer) ? _factoryMethod() : buffer;
    }
  }

使用舉例

復(fù)制代碼 代碼如下:

class Program
  {
    static void Main(string[] args)
    {
      var pool = new FlyweightObjectPool<byte[]>(() => new byte[65535]);
      pool.Allocate(1000);

      var buffer = pool.Dequeue();

      // .. do something here ..

      pool.Enqueue(buffer);
    }
  }

相關(guān)文章

  • 經(jīng)典實(shí)例講解C#遞歸算法

    經(jīng)典實(shí)例講解C#遞歸算法

    這篇文章主要用實(shí)例講解C#遞歸算法的概念以及用法,文中代碼非常詳細(xì),幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C#語(yǔ)言中的修飾符匯總

    C#語(yǔ)言中的修飾符匯總

    本文主要介紹的是C#語(yǔ)言中的修飾符,主要從四方面介紹,希望對(duì)大家有幫助,一起來看。
    2015-10-10
  • C#套接字(Socket)通信之UDP組播詳解

    C#套接字(Socket)通信之UDP組播詳解

    單播 Unicast是指客戶端與服務(wù)器之間的點(diǎn)到點(diǎn)連接,組播和單播的差別是,必須得有一個(gè)“組”的概念,然后才能進(jìn)行組播,本文就來和大家講講UDP組播的實(shí)現(xiàn)吧
    2023-05-05
  • C#中DateTime.Compare()比較時(shí)間大小

    C#中DateTime.Compare()比較時(shí)間大小

    本文主要介紹了C#中DateTime.Compare()比較時(shí)間大小,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法

    C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法,涉及C#窗體設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 淺析C#?AsyncLocal如何在異步間進(jìn)行數(shù)據(jù)流轉(zhuǎn)

    淺析C#?AsyncLocal如何在異步間進(jìn)行數(shù)據(jù)流轉(zhuǎn)

    在異步編程中,處理異步操作之間的數(shù)據(jù)流轉(zhuǎn)是一個(gè)比較常用的操作,C#異步編程提供了一個(gè)強(qiáng)大的工具來解決這個(gè)問題,那就是AsyncLocal,下面我們就來看看AsyncLocal的原理和用法吧
    2023-08-08
  • DevExpress之ChartControl用法實(shí)例總結(jié)

    DevExpress之ChartControl用法實(shí)例總結(jié)

    這篇文章主要介紹了DevExpress之ChartControl用法實(shí)例總結(jié),需要的朋友可以參考下
    2014-08-08
  • 經(jīng)典排序算法之冒泡排序(Bubble sort)代碼

    經(jīng)典排序算法之冒泡排序(Bubble sort)代碼

    這篇文章主要介紹了經(jīng)典排序算法之冒泡排序(Bubble sort)代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • c#使用csredis操作redis的示例

    c#使用csredis操作redis的示例

    這篇文章主要介紹了c#使用csredis操作redis的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • 基于WPF實(shí)現(xiàn)面包屑控件的示例代碼

    基于WPF實(shí)現(xiàn)面包屑控件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)簡(jiǎn)單的面包屑控件,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2023-05-05

最新評(píng)論