設計模式18 蠅量 享元 模式

2021-09-27 03:34:42 字數 1306 閱讀 4673

大量的微小的物件,物件屬性拆開-內部屬性和外部屬性拆開;

比如樹物件,普通設計為:有乙個集合儲存樹物件,每個物件有其對應的橫座標,縱座標,及年齡 .

而蠅量模式為: 多個集合(每個集合長度一樣),第乙個集合儲存所有虛擬樹物件,第二個儲存所有樹的橫座標,第三個儲存樹的所有縱座標,第四個儲存所有樹的年齡. 在需要的情況下在將每個集合中的值拿出來組合樹物件.

[外鏈轉存失敗(img-23r0c0gh-1568562266249)(

public class tree 

public void display()

}public class treestest

} public void display() }}

public class ootest

public static void showmeminfo()

}

public class treeflyweight 

public void display(int xcoord, int ycoord, int age)

}public class treemanager

} public void displaytrees() }}

public class flyweighttest

public static void showmeminfo()

}

public abstract class plant 

public abstract void display(int xcoord, int ycoord, int age);

}public class tree extends plant

}public class grass extends plant

}public class plantfactory

public plant getplant(int type)

} return plantmap.get(type); }}

public class plantmanager }

public void displaytrees() }}

public class flyweight2test

public static void showmeminfo()

}

**蠅量模式:**通過共享的方式高效地支援大量細粒度的物件。

[外鏈轉存失敗(img-yccnasef-1568562266250)(

缺點:

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

flyweight模式也叫享元模式,是構造型模式之一,它通過與其他類似物件共享資料來減小記憶體占用。換句話說就是通過共享的方式高效地支援大量細粒度的物件。享元模式的結構 享元模式的角色和職責 優缺點 優點 缺點 適用場合 我們有乙個景觀設計軟體專案 需要布置很多的樹 xy座標,樹的大小,外觀 假如需...

二十三種設計模式之蠅量模式 享元模式

蠅量模式 享元模式 通過共享方式高效支援大量細粒度物件.將乙個物件抽象出內部屬性作為蠅量物件 抽象出外部屬性 作為管理外部狀態 特點 減少執行時物件例項的個數,節省開銷和記憶體 public classtree public voiddisplay public classtreetest publ...

設計模式之蠅量模式

模式定義 該模式以共享的方式高效地支援大量的細粒度物件。通過復用記憶體中已經存在的物件,降低系統建立物件的效能消耗。遵循原則 共享細粒度物件,降低記憶體消耗 分開變化和不變部分。適用場合 1 當系統中某物件型別的例項比較多的時候 2 在系統設計時,物件例項進行分類後,發現真正有區別的分類很少的時候。...