开发多用户注册使用的网站---享元模式
来源:互联网 发布:java创建对象关键字 编辑:程序博客网 时间:2024/04/28 08:40
我们在实际项目开发过程中,肯定遇到以下类似的情况:专为小型公司注册并显示的公司信息,提供不同样式的显示方式;我们不会为每个注册的账户的公司都开发出一套量身打造的网站,而且才用共享技术的方式来实现核心技术、其他变化部分采用外部变量的方式传入进行操作。这就是今天我们要讲的享元模式。
什么是享元模式?运用共享的技术有效地支持大量细粒级的对象。换种说法,就是减少创建对象的数量,减少系统开销。因为我们的硬件资源是有限的;
代码部分:
Flyweight类是超类,是具体享元类的接口;这里要将外部的状态传入并可进行处理;
abstract class Flyweight{public abstract void Operation(int extrinsicstate);}
ConcreteFlyweight类为具体的享元类;
class ConcreteFlyweight:Flyweight{public override void Operation(int extrinsicstate){Console.WriteLine("具体的享元对象:"+extrinsicstate);}}
我们一定要预留不享元的情况,方便其他的操作;
class UnshareConcreteFlyweight:Flyweight{public override void Operation(int extrinsicstate){Console.WriteLine("不共享具体的享元对象:"+extrinsicstate);}}
需要用一个工厂类来管理我们的享元对象;存在则获取,不存在则创建;这样做可以减少享元对象的个数,减少存储的开销;
class FlyweightFactory{private Hashtable flyweights=new Hashtable();public FlyweightFactory(){ //初始化享元的对象,我们也可以不用初始化,在获取数据的时候如果为null,则自动创建添加flyweights.Add("x",new ConcreteFlyweight());flyweights.Add("Y",new ConcreteFlyweight());flyweights.Add("z",new ConcreteFlyweight());}public Flyweight GetFlyweight(string key){ //如果我们没有在初始化享元对象,则不存在 采用添加的方式/*if(!flyweights.ContainsKey(key)){flyweights.Add(key,new ConcreteFlyweight());}*/return ((Flyweight)flyweights[key]);}}
客户端比较简单,只是要注意我们这个地方有个外部的状态。我们在实际上区分不同的显示方式则根据外部变量来进行的。例如:在注册并显示不同公司的信息的时候,我们可以根据我们系统申请的ID(唯一值,就是外部状态)来传入显示公司的信息,并根据ID设定好的样式格式显示出来。
//客户端static void Main(string[] arg){ //代码外部状态,这个就是变化部分int extrinsicstate =100;FlyweightFactory fly=new FlyweightFactory();Flyweight fx=fly.GetFlyweight("x");fx.Operation(extrinsicstate--);Flyweight fx=fly.GetFlyweight("y");fx.Operation(extrinsicstate--);Flyweight fx=fly.GetFlyweight("z");fx.Operation(extrinsicstate--);UnshareConcreteFlyweight ux=new UnshareConcreteFlyweight();ux.Operation(extrinsicstate--);}
0 0
- 开发多用户注册使用的网站---享元模式
- 时间分隔多用户同时注册的方法
- 网站的开发模式
- Android多用户模式的特性
- 使用mvc模式开发网站
- 使用nodejs、mongodb、express、linux搭建社区网站(4)-mongodb连接及注册的开发
- Java的享元模式
- Java的享元模式
- JAVA开发的23种设计模式之 --- 享元模式
- 利用享元模式模拟网站对象建立 C++
- hadoop集群搭建多用户模式的hive
- Android新手笔记:通过sharedpreferences实现简单的多用户注册
- 【设计优化】- 正确使用享元模式
- 开发模式和设计模式的实例--注册
- sspanel网站注册使用和Shadowsocks的配置以及使用
- Jmeter——使用StringFromFile函数模仿多用户访问网站
- 使用nodejs,express,mysql,Bootstrap开发采购招标网站(二)主页和注册页面的实现
- 如何更改数据库的单用户模式和多用户模式
- Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波
- 开源网站汇总
- CSS3 Gradient Buttons
- Deep Learning论文笔记之(三)单层非监督学习网络分析
- awt和swing做的计算器
- 开发多用户注册使用的网站---享元模式
- 直接调用类成员函数地址
- v4l2虚拟驱动的应用测试程序讲解
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
- OC内存管理
- Codeforces Round #293 (Div. 2) -- D. Ilya and Escalator (DP)
- 各个平台的mysql重启命令
- 注册制可能对我们带来的影响-读《三十年股票投资心得》
- System方法总结