1.1 定義與特點
運用共享技術來有効地支援大量細粒度物件的復用。它通過共享已經存在的又橡來大幅度減少需要建立的物件數量、避免大量相似類的開銷,從而提高系統資源的利用率。
享元模式的主要優點是:
享元模式的主要缺點是:
1.2 模式的結構
享元模式中存在以下兩種狀態:
享元模式的主要角色有如下:
1.3 問題由來
黑白五子棋或者圍棋只有兩種顏色-黑白,如果我們把棋子作為乙個抽象類chess,黑棋blackchess和白棋whitechess分別作為繼承抽象類的具體類,那麼每下一步都需要new乙個新的棋子物件,如此下來會產生大量的黑白棋物件。仔細觀察黑白棋,不難發現黑白棋物件其實都一樣,唯一不同的是其位置的變化。那麼是否有一種方法可以實現這樣的效果:不用建立大量的黑白棋物件,但是也能準確的實現其位置的變化?答案是:有的。
1.4 解決思路
把物件的共同的部分抽象出來,不同的部分以引數的形式通過方法傳入到抽象中,這樣當面臨建立大量相同或相似物件例項的問題,實現前面這個的抽象類,就可以減少需要建立的物件數量、避免大量相似類的開銷,達到物件的復用(共享)的目的,把不同的部分作為方法引數傳入物件,就可以達到達到不同狀態的目的。
1.5 uml類圖
1.6 解決方案
/**
* @author tbb
* 棋子
*/public
abstract
class
piece
}
/**
* @author tbb
* 白棋
*/public
class
whitepiece
extends
piece
}
/**
* @author tbb
* 黑棋
*/public
class
blackpiece
extends
piece
}
/**
* @author tbb
* 棋子工廠
*/public
inte***ce
piecefactory
/**
* @author tbb
* 黑棋工廠
*/public
class
blackpiecefactory
implements
piecefactory
}
/**
* @author tbb
* 白棋工廠
*/public
class
whitepiecefactory
implements
piecefactory
}
public
class
test
}
設計模型之工廠模式 含UML完整例項
1.1 定義 乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。工廠方法模式的主要優點有 使用者只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體建立過程 在系統增加新的產品時只需要新增具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則 工廠方...
設計模型之命令模式含UML完整例項
1.1 定義與特點 命令 command 模式的定義如下 將乙個請求封裝為乙個物件,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令物件進行溝通,這樣方便將命令物件進行儲存 傳遞 呼叫 增加與管理。命令模式的主要優點如下 命令模式的缺點是 1.2 模式的結構 命令模式包含以下主要角色 1...
設計模型之抽象工廠模式 含UML完整例項
1.1 定義與特點 用來生產不同產品族的全部產品。對於增加新的產品,無能為力 支援增加產品族 使用抽象工廠模式一般要滿足以下條件 1 系統中有多個產品族,每個具體工廠建立同一族但屬於不同等級結構的產品。2 系統一次只可能消費其中某一族產品,即同族的產品一起使用。抽象工廠模式除了具有工廠方法模式的優點...