设计模式之蝇量模式
来源:互联网 发布:reminder 软件 编辑:程序博客网 时间:2024/04/30 12:05
场景.首先来看一个简单的类:
package designpattern.flyweight;public class Tree {private int xCoord;private int yCoord;private int age;public void display() {System.out.println("Position is (" + xCoord + " , " + yCoord + " , age is " + age + ".");}public int getxCoord() {return xCoord;}public void setxCoord(int xCoord) {this.xCoord = xCoord;}public int getyCoord() {return yCoord;}public void setyCoord(int yCoord) {this.yCoord = yCoord;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
当你要使用该类时,便会实例化一个该类的对象,如果需要实例化的数量过多,则会消耗很多内存?如何解决这个问题呢?
解决办法:使用蝇量模式
package designpattern.flyweight;public class FlyweightTree {public static void display(int xCoord, int yCoord, int age) {System.out.println("Position is (" + xCoord + " , " + yCoord + ") , age is " + age + ".");}}
package designpattern.flyweight;public class TreeManager {int[][] treeArray = {{1,2,10},{1,2,10},{1,2,10}};public void displayTree() {for (int i = 0; i < treeArray.length; i++) {FlyweightTree.display(treeArray[i][0], treeArray[i][1], treeArray[i][2]);}}public static void main(String[] args) {TreeManager t = new TreeManager();t.displayTree();}}
蝇量模式:只用一个树实例和一个客户对象来维护”所有“树的状态。
当一个类有许多的实例,而这些实例能被同一方法控制的时候,我们便可以使用蝇量模式
优点:
减少运行时对象实例的个数,节省内存;
将许多”虚拟“对象的状态集中管理;
缺点:
一旦你实现了它,那么单个的逻辑实例将无法拥有独立而不同的实现。
参考:Head First 设计模式。
0 0
- 设计模式之蝇量模式
- 设计模式之蝇量模式
- 二十三种设计模式之蝇量模式(享元模式)
- 【重读设计模式】享元模式(蝇量模式)
- 蝇量模式 FlyWeightPattern
- java 开发模式之十八 :蝇量模式(享元模式)
- 【设计模式】设计模式之适配器模式
- 【设计模式】设计模式之外观模式
- 【设计模式】设计模式之工厂模式
- 设计模式之FlyWeight模式
- 设计模式之command模式
- 设计模式之proxy模式
- 设计模式之Singleton模式
- 设计模式之Builder模式
- 设计模式之观察者模式
- 设计模式之 Command 模式
- 设计模式之创建模式
- 设计模式之结构模式
- uva 1073 - Glenbow Museum(递推)
- 2014-04-12腾讯实习生笔试题目及解析
- HDU 2485 求删最少点使得 边权=1的有向图最短路>k
- 关于MAC下中文latex编译环境的配置
- 链接分析之随机游走模型和子集传播模型
- 设计模式之蝇量模式
- 建立自己的资源管理器
- 动态加载树----treeView
- LINUX学习之路(学LINUX必看)
- 缓冲文件系统和非缓冲文件系统(转载)
- PSC
- 在DataGrid中使用下拉列表框和设置焦点
- 文件删除函数
- 游戏棋-模拟题