zoukankan      html  css  js  c++  java
  • 设计模式--享元模式

    运用共享技术有效地支持大量细粒度的对象。

    享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。

    //享元类
    abstract class Flyweight
    {
    public abstract void Use();
    }

    //具体实现

    class ConcreteFlyweight : Flyweight
    {
    string name;
    public ConcreteFlyweight(string name)
    {
    this.name = name;
    }
    public override void Use()
    {
    Console.WriteLine("具体分类:{0}", name);
    }

    }

    //享元工厂
    class FlyweightFactory
    {
    Hashtable flyweights = new Hashtable();

    public Flyweight GetFlyweights(string key)
    {
    if(!flyweights.ContainsKey(key))
    {
    flyweights.Add(key, new ConcreteFlyweight(key));
    }
    return (Flyweight)flyweights[key];
    }

    public Flyweight GetFlyweight(string key)
    {
    return (Flyweight)flyweights[key];
    }

    public int GetCount()
    {
    return flyweights.Count;
    }

    }

    调用:

    FlyweightFactory f = new FlyweightFactory();

    f.GetFlyweights("x").Use();
    f.GetFlyweights("y").Use();
    f.GetFlyweights("y").Use();
    f.GetFlyweights("z").Use();

    Console.WriteLine("分类总数:" + f.GetCount());

  • 相关阅读:
    jmeter中response data出现乱码的解决方法
    jmeter功能摘要
    jmeter的安装目录文件
    C语言中if(a);if(!a);if(a!=0);if(a==0)有什么区别?
    python怎么连接redis(附源码)
    组管理和权限管理
    实用指令
    用户管理
    开机/重启/用户切换/注销
    vim快捷键
  • 原文地址:https://www.cnblogs.com/buzhidaojiaoshenme/p/6732891.html
Copyright © 2011-2022 走看看