zoukankan      html  css  js  c++  java
  • 蝇量模式——HeadFirst设计模式学习笔记

    蝇量模式:让某个类的一个实例能够用来提供多个“虚拟”实例,运用共享技术有效地支持大量细粒度的对象

    特点:

    • 减少运行时对象实例的个数
    • 将许多“虚拟”对象的状态一同管理
    • 运用共享技术有效地支持大量细粒度的对象
    • 区分对象的共享变量(内部状态)和不可共享变量(外部状态,将此类变量从类从剔除,由外部传入) 

    用途:

    • 当一个类需要创建很多个实例,而这些实例可以被同一个方法控制

    缺点:

    • 单个逻辑实例将无法拥有独立不同的行为

    举例:

    你需要建立很多树对象,每个树对象有三个属性:位置坐标x、y,年龄。如果为每个树创建一个对象,将造成大量的对象各自占用自己的内存空间,考虑使用蝇量模式,建立一个TreeManger对象管理多个树的属性值,并提供具体方法

     1 public class TreeManager {  
     2       
     3     int[][] treeArray = {{1,2,10},{1,2,10},{1,2,10}};  
     4       
     5     public void displayTree() {  
     6         for (int i = 0; i < treeArray.length; i++) {  
     7             FlyweightTree.display(treeArray[i][0], treeArray[i][1], treeArray[i][2]);  
     8         }  
     9     }  
    10       
    11     public static void main(String[] args) {  
    12         TreeManager t = new TreeManager();  
    13         t.displayTree();  
    14     }  
    15 }  
  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/HectorHou/p/6032103.html
Copyright © 2011-2022 走看看