zoukankan      html  css  js  c++  java
  • 23 DesignPatterns学习笔记:C++语言实现 --- 2.5 Factory

    23 DesignPatterns学习笔记:C++语言实现 --- 2.5 Factory

     2016-07-18 

    (www.cnblogs.com/icmzn)


    模式理解

     

     1. Flyweight 模式,即享元(共享单元)模式
        Flyweeight是拳击比赛中的特有名词,称为“特轻量级别”,则在设计模式中指的的是类要轻量、类的粒度要细,可以实现细粒度类的复用,但没有
    缺乏共享的机制,即多线程下类不可复用。
        享元模式,是“池技术”的重要实现方式,但二者并不等价。使用享元模式可以支持大量的细粒度的对象的共享。
        因为创建太多的对象到程序中有损程序的性能,可以采用享元模式的共享技术,将对象视为为“细粒度对象”然后实现“共享对象”。
    细粒度对象是指对象的数量多且性质相近,可以将对象的信息分为“内部状态intrinsic”“外部状态extriinsic”.
    内部状态Intrinsic:是对象可共享的信息,存储在具体享元对象的内部,
    外部状态Extrinsic:则是被作为一个标记,因为外部状态是根据外部条件制定的标记分类,所以外部状态会随环境改变而改变,所以这部分信息
        一般来说Flyweight可以分为如下4个角色:
    (1)AbsFlyweight,抽象享元角色(共享单元)
        就是一个共享单元的抽象行为属性,一般为抽象类,在项目中可能是一个具体类,一般可以把外部状态和内部状态先定义(实现)出来,避免了
    派生类中的随意扩展。
    (2)ConcreteflyWeight, 具体的享元角色(内部状态初始化)
        具体的一个产品类,实现AbsFlyweight的抽象方法或业务逻辑。完成内部属性的各种个性化操作。
    (3)UnshareFlyweight, 不可共享的享元角色(在设计模式中没有体现)
        不能够使用共享技术的对象,该对象一般不出现在享元工厂中。
    (4)FlyweightFactory, 享元工厂
        构造一个池容器,同时根据享元中的外部属性最为Key值,搜索池容器中缓冲的向原对象。


    2. Flyweight 优点


    3. Flyweight 适用场景
    (1)使一些细粒度的对象可以共享,采用享元模式。

    4. Flyweight 讨论


     程序实现(C++)

     


    (1)模板应用

     

    (2)输出展示

     

     

  • 相关阅读:
    DataGridViewer表格中设置ProgressBar显示进度百分比和修改进度条颜色
    excel操作
    sql的时间
    DateTime的各种用法
    DataGridViewer表格中将Button设置为不可用
    OpenCV特征检测和特征匹配
    切片
    c#命名规范
    Remove Linked List Elements
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/icmzn/p/5697417.html
Copyright © 2011-2022 走看看