<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Head First設計模式之享元模式(蠅量模式)

      一、定義

      享元模式(Flyweight Pattern)主要用于減少創建對象的數量,以減少內存占用和提高性能。這種類型的設計模式屬于結構型模式,它提供了減少對象數量從而改善應用所需的對象結構的方式。

      享元模式嘗試重用現有的同類對象,如果未找到匹配的對象,則創建新對象。我們將通過創建 5 個對象來畫出 20 個分布于不同位置的圓來演示這種模式。由于只有 5 種可用的顏色,所以 color 屬性被用來檢查現有的 Circle 對象。

      二、結構

       

      三、實現

       

      namespace DesignPatterns.Flyweight
      {
          class Program
          {
              static Random ran = new Random();
              static Random ranIndex = new Random();
              static string[] colors = { "Red", "Green", "Blue", "White", "Black" };
              static void Main(string[] args)
              {
                  for (int i = 0; i < 20; ++i)
                  {
                      Circle circle = (Circle)ShapeFactory.GetCircle(GetRandomColor());
                      circle.SetX(GetRandomX());
                      circle.SetY(GetRandomY());
                      circle.SetRadius(100);
                      circle.Draw();
                  }
              }
              private static string GetRandomColor()
              { 
                  int randKey = ranIndex.Next(0, colors.Count() - 1);
                  return colors[randKey];
              }
              private static int GetRandomX()
              {
                  var d = GetDouble();
                  return (int)(d * 100);
              }
              private static int GetRandomY()
              {
                  var d = GetDouble();
                  return (int)(d * 100);
              }
      
              private static double GetDouble()
              {
                  int randKey = ran.Next(1, 100);
                  return randKey * (1.0) / 100;
              }
      
          }
      
          public interface IShape
          {
              void Draw();
          }
      
          public class Circle : IShape
          {
              private String color;
              private int x;
              private int y;
              private int radius;
      
              public Circle(String color)
              {
                  this.color = color;
              }
      
              public void SetX(int x)
              {
                  this.x = x;
              }
      
              public void SetY(int y)
              {
                  this.y = y;
              }
      
              public void SetRadius(int radius)
              {
                  this.radius = radius;
              }
      
      
              public void Draw()
              {
                  Console.WriteLine("Circle: Draw() [Color : " + color + ", x : " + x + ", y :" + y + ", radius :" + radius);
              }
          }
          public class ShapeFactory
          {
              private static Dictionary<String, IShape> circleMap = new Dictionary<String, IShape>();
      
              public static IShape GetCircle(String color)
              {
      
                  Circle circle;
                  if (circleMap.ContainsKey(color))
                  {
                      circle = (Circle)circleMap[color];
                  }
                  else
                  {
                      circle = new Circle(color);
                      circleMap[color] = circle;
                      Console.WriteLine("Creating circle of color : " + color);
                  }
      
                  return circle;
              }
          }
      }

       

       

      四、使用場景

       1、系統中有大量對象。

      2、這些對象消耗大量內存。

      3、這些對象的狀態大部分可以外部化。

      4、這些對象可以按照內蘊狀態分為很多組,當把外蘊對象從對象中剔除出來時,每一組對象都可以用一個對象來代替。

      5、系統不依賴于這些對象身份,這些對象是不可分辨的。

      五、優缺點

      優點:
      1)享元模式的優點在于它可以極大減少內存中對象的數量,使得相同對象或相似對象在內存中只保存一份。
      2)享元模式的外部狀態相對獨立,而且不會影響其內部狀態,從而使得享元對象可以在不同的環境中被共享。
      缺點:
      1)享元模式使得系統更加復雜,需要分離出內部狀態和外部狀態,這使得程序的邏輯復雜化。
      2)為了使對象可以共享,享元模式需要將享元對象的狀態外部化,而讀取外部狀態使得運行時間變長。

       

      posted @ 2017-08-03 23:23  心存善念  閱讀(831)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 熟妇人妻中文a∨无码| 日韩乱码人妻无码系列中文字幕| 亚洲日韩精品无码av海量| 午夜福利视频| 在线精品视频一区二区| 欧洲无码一区二区三区在线观看| 亚洲国产精品成人av网| 一区二区精品久久蜜精品| 国偷自产av一区二区三区| 熟女国产精品一区二区三| 国产乱码1卡二卡3卡四卡5| 南雄市| 蜜臀av一区二区精品字幕| 久久超碰色中文字幕超清| 精精国产xxxx视频在线| 日韩高清不卡一区二区三区| 国产AV福利第一精品| 亚洲精品乱码久久久久久| 无码精品人妻一区二区三区中| 国产日韩久久免费影院| 亚洲欧美在线观看品| 亚洲av成人在线一区| 国产免费人成网站在线播放| 99在线视频免费观看| 国产一区国产精品自拍| 国产高颜值不卡一区二区| 国产精品久久久久av福利动漫| 亚洲性日韩一区二区三区| 激情97综合亚洲色婷婷五| 人妻中文字幕精品系列| 亚洲男人天堂东京热加勒比| 国精产品一品二品国精在线观看| 伦理片午夜视频在线观看| 亚洲中文久久久精品无码| 嘉荫县| 日本一区二区三区在线 |观看| 国产一区二区三区韩国| 国产精品视频一区不卡| 国产精品毛片一区视频播| 成年在线观看免费人视频| 国产精品日韩中文字幕熟女|