国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

二十三種設(shè)計模式第十三篇--享元模式

這篇具有很好參考價值的文章主要介紹了二十三種設(shè)計模式第十三篇--享元模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

享元模式,主要就是一種池化方案,主要用于創(chuàng)建對象的數(shù)量,以減少內(nèi)存占用和提高性能。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它提供了減少對象數(shù)量從而改善應(yīng)用所需的對象結(jié)構(gòu)的方式。

享元模式,嘗試重用現(xiàn)有的同類對象,如果未找到相同匹配的對象,那么就去創(chuàng)建對象。享元模式的核心思想是共享相同狀態(tài)的對象,以節(jié)省系統(tǒng)資源和內(nèi)存空間。

在享元模式中,對象分為兩種類型:內(nèi)部狀態(tài)(Intrinsic State)和外部狀態(tài)(Extrinsic State)。
內(nèi)部狀態(tài)是對象可以共享的不變數(shù)據(jù),而外部狀態(tài)是隨著對象上下文的變化而變化的數(shù)據(jù)。通過將內(nèi)部狀態(tài)和外部狀態(tài)分離,享元模式使得多個對象可以共享相同的內(nèi)部狀態(tài),而外部狀態(tài)則可以在運行時設(shè)置。

使用享元模式的主要目的是在系統(tǒng)中有大量對象并且這些對象的大部分狀態(tài)是相同的情況下,減少對象的數(shù)量,節(jié)省內(nèi)存空間,并提高系統(tǒng)的性能。通過共享相同狀態(tài)的對象,可以避免重復(fù)創(chuàng)建相似的對象,從而減少內(nèi)存占用。這對于需要創(chuàng)建大量細(xì)粒度的對象的場景特別有用,例如富文本編輯器中的字母對象、游戲中的粒子系統(tǒng)等。
二十三種設(shè)計模式第十三篇--享元模式,# 設(shè)計模式,設(shè)計模式,享元模式,java

public interface Shape {
   void draw();
}
public class Circle implements Shape {
   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;
   }
 
   @Override
   public void draw() {
      System.out.println("Circle: Draw() [Color : " + color 
         +", x : " + x +", y :" + y +", radius :" + radius);
   }
}
public class ShapeFactory {

   //享元
   private static final HashMap<String, Shape> circleMap = new HashMap<>();
 
   public static Shape getCircle(String color) {
      Circle circle = (Circle)circleMap.get(color);
 
      if(circle == null) {
         circle = new Circle(color);
         circleMap.put(color, circle);
         System.out.println("Creating circle of color : " + color);
      }
      return circle;
   }
}
public class FlyweightPatternDemo {
   private static final String colors[] = { "Red", "Green", "Blue", "White", "Black" };

   /**
   我們將創(chuàng)建一個 Shape 接口和實現(xiàn)了 Shape 接口的實體類 Circle。下一步是定義工廠類 ShapeFactory。
   ShapeFactory 有一個 Circle 的 HashMap,其中鍵名為 Circle 對象的顏色。無論何時接收到請求,都會創(chuàng)建一個特定顏色的圓。
   ShapeFactory 檢查它的 HashMap 中的 circle 對象,如果找到 Circle 對象,則返回該對象,否則將創(chuàng)建一個存儲在 hashmap 中以備后續(xù)使用的新對象,并把該對象返回到客戶端。
   FlyWeightPatternDemo 類使用 ShapeFactory 來獲取 Shape 對象。它將向 ShapeFactory 傳遞信息(red / green / blue/ black / white),以便獲取它所需對象的顏色
    */

   public 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() {
      return colors[(int)(Math.random()*colors.length)];
   }
   private static int getRandomX() {
      return (int)(Math.random()*100 );
   }
   private static int getRandomY() {
      return (int)(Math.random()*100);
   }
}

總結(jié)來說,享元模式的意圖是通過共享對象的方式有效地支持大量細(xì)粒度的對象,減少對象的創(chuàng)建和內(nèi)存占用。它可以提高系統(tǒng)的性能和資源利用率。使用該模式時,需要將對象的內(nèi)部狀態(tài)和外部狀態(tài)進(jìn)行合理劃分,確保內(nèi)部狀態(tài)是可以共享的,而外部狀態(tài)可以在運行時設(shè)置。

好處:
這樣可以實現(xiàn)對象的共享,避免重復(fù)創(chuàng)建相似的對象,從而達(dá)到節(jié)省內(nèi)存的目的。文章來源地址http://www.zghlxwxcb.cn/news/detail-531097.html

到了這里,關(guān)于二十三種設(shè)計模式第十三篇--享元模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 二十三種設(shè)計模式第十六篇--觀察者模式

    二十三種設(shè)計模式第十六篇--觀察者模式

    觀察者模式是一種行為型設(shè)計模式,它建立了一種對象間的一對多依賴關(guān)系,使得當(dāng)一個對象的狀態(tài)發(fā)生變化時,所有依賴于它的對象都會得到通知并自動更新。這種模式可以實現(xiàn)對象間的松耦合通信,提高系統(tǒng)的可擴(kuò)展性和靈活性。 觀察者模式的核心是兩個角色:主題(

    2024年02月12日
    瀏覽(30)
  • 二十三種設(shè)計模式:工廠模式

    工廠模式是一種創(chuàng)建型設(shè)計模式,它提供了一種創(chuàng)建對象的最佳方式,而無需暴露對象的創(chuàng)建邏輯。工廠模式通過使用工廠方法來解決這個問題,該方法將對象的創(chuàng)建委托給子類來處理。 在工廠模式中,我們定義一個抽象工廠類,它包含一個抽象的工廠方法,該方法返回一個

    2024年02月07日
    瀏覽(23)
  • 二十三種設(shè)計模式(待更)

    二十三種設(shè)計模式(待更)

    資料來源于老師講解以及大佬的設(shè)計模式倉庫 zhengqingya 將對象和類按某種布局組成更大的結(jié)構(gòu),并同時保持結(jié)構(gòu)的靈活和?效。 1.適配器 適配器就是將原先無法直接使用的某個接口或者類通過適配器模式轉(zhuǎn)換為可以使用的接口或者類。將一個類的接口轉(zhuǎn)換成客戶希望的另外

    2024年02月08日
    瀏覽(19)
  • 二十三種設(shè)計模式第二十篇--備忘錄模式

    二十三種設(shè)計模式第二十篇--備忘錄模式

    備忘錄模式,備忘錄模式屬于行為型模式。它允許在不破壞封裝的情況下捕獲和恢復(fù)對象的內(nèi)部狀態(tài)。 保存一個對象的某個狀態(tài),以便在適當(dāng)?shù)臅r候恢復(fù)對象,該模式通過創(chuàng)建一個備忘錄對象來保存原始對象的狀態(tài),并將其存儲在一個負(fù)責(zé)管理備忘錄的負(fù)責(zé)人對象中。 備忘

    2024年02月14日
    瀏覽(23)
  • 二十三種設(shè)計模式第二十四篇--訪問者模式(完結(jié)撒花)

    二十三種設(shè)計模式第二十四篇--訪問者模式(完結(jié)撒花)

    在訪問者模式(Visitor Pattern)中,我們使用了一個訪問者類,它改變了元素類的執(zhí)行算法。 通過這種方式,元素的執(zhí)行算法可以隨著訪問者改變而改變。 這種類型的設(shè)計模式屬于行為型模式。根據(jù)模式,元素對象已接受訪問者對象,這樣訪問者對象就可以處理元素對象上的

    2024年02月14日
    瀏覽(24)
  • 【中級軟件設(shè)計師】—(針對上午題)二十三種設(shè)計模式(三十九)

    【中級軟件設(shè)計師】—(針對上午題)二十三種設(shè)計模式(三十九)

    簡單工廠模式代碼實現(xiàn)如下: ?? 意圖要背 工廠方法代碼實現(xiàn)如下: 抽象工廠模式代碼如下: 生成器模式代碼如下: 原型模式代碼實現(xiàn)如下: 單例模式代碼如下: 橋接模式代碼實現(xiàn)如下: 組合模式添加和刪除代碼實現(xiàn): 裝飾器模式代碼實現(xiàn): 外觀模式代碼實現(xiàn): 代理模

    2024年02月07日
    瀏覽(36)
  • 二十三種設(shè)計模式全面解析-抽象工廠模式:創(chuàng)造無限可能的工廠之道

    在軟件開發(fā)中,我們經(jīng)常面臨著創(chuàng)建一系列相關(guān)或相互依賴的對象的挑戰(zhàn)。在這個過程中,我們希望能夠靈活地創(chuàng)建對象,又不與具體的類耦合。那么有沒有一種設(shè)計模式可以幫助我們實現(xiàn)這一目標(biāo)呢?答案是肯定的!讓我?guī)氵M(jìn)入抽象工廠模式的世界,一起探索創(chuàng)造無限可

    2024年02月07日
    瀏覽(24)
  • 二十三種設(shè)計模式全面解析-原型模式進(jìn)階之原型管理器:集中管理對象原型的設(shè)計模式之道

    在軟件開發(fā)中,我們經(jīng)常需要創(chuàng)建和復(fù)制對象。然而,有時候直接創(chuàng)建對象可能會導(dǎo)致性能下降或代碼重復(fù)。為了解決這些問題,原型模式應(yīng)運而生。而使用原型管理器(Prototype Manager)來集中管理原型對象可以進(jìn)一步提高靈活性和可維護(hù)性。本文將詳細(xì)介紹原型管理器的用

    2024年02月07日
    瀏覽(23)
  • 二十三種設(shè)計模式全面解析-裝飾器模式的高級應(yīng)用:打造靈活可擴(kuò)展的通知系統(tǒng)

    在現(xiàn)代軟件開發(fā)中,通知系統(tǒng)是一個廣泛應(yīng)用的功能,用于實時向用戶發(fā)送各種類型的通知,如短信、微信、郵件以及系統(tǒng)通知。然而,通知系統(tǒng)的需求通常是多變且動態(tài)的,因此需要一種靈活可擴(kuò)展的設(shè)計模式來滿足不同類型的通知需求。 在前面一篇文章中,我們介紹了什

    2024年02月06日
    瀏覽(28)
  • 二十三種設(shè)計模式全面解析-橋接模式的高級應(yīng)用:構(gòu)建靈活的跨平臺UI框架

    在軟件開發(fā)的世界中,橋接模式(Bridge Pattern)作為一種設(shè)計模式,旨在將抽象部分與實現(xiàn)部分分離,從而使它們可以獨立地變化。這一模式的應(yīng)用不僅有助于提高代碼的可維護(hù)性,還在一些復(fù)雜的場景中展現(xiàn)出其真正的價值。 前面一篇文章中,我們介紹了什么是橋接模式?

    2024年02月05日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包