java設計模式之享元模式

2021-08-16 14:04:04 字數 456 閱讀 7300

享元模式,顧名思義,就是共享同乙個物件。

舉個簡單的例子:

integer i = 1;

integer j = 1;

system.out.println(i==j); //true

integer a = 200;

integer b = 200;

system.out.println(a==b); //false

對於為啥會出現這種情況,可以檢視integer類中的valueof方法,實際上integer 類初始化了乙個陣列,這個陣列包含-128到127的數,當變數小於127時,會直接返回陣列中的物件,而不是建立這個物件,當大於127時,便會new 乙個物件出來。

這也就解釋了上面的輸出情況。這裡的設計思想也就是用到了享元模式的思想,將小範圍但需大量使用的數字先初始化,直接返回需要的物件,這是典型的以時間換取空間的思想。

JAVA設計模式之享元模式

場景 記憶體屬於稀缺資源,不要隨便浪費,如果有很多個完全相同或相似的物件,我們可以通過享元模式,節省記憶體 核心 享元模式以共享的方式高效地支援大量細粒度物件的重用 內部狀態 可以共享,不會碎環境變化而變化 外部狀態 不可以共享,會隨環境變化而改變 package com.imust.flyweig...

java設計模式之享元模式

uml設計 定義及使用場景 利用共享的方式解決大量建立銷毀導致額外開銷 示例 構建享元角色介面 public inte ce flyweight 構建具體享元類 public class concreteflyweight implements flyweight 構建享元工廠 public cla...

Java 設計模式 享元模式

在介紹享元模式之前,先來看乙個問題。假設要你去做一款撲克牌遊戲,你會針對撲克牌設計一種怎樣的資料結構呢?因為撲克牌有四種花色,也即紅桃 heart 黑桃 spade 方塊 diamond 梅花 club 有 13 種不同的大小,也即 a k 還有大小王,所以這個類應該很好設計,如下所示 public...