文章来源本人的博客:http://codelifeliwan.github.io/ 转载请注明出处
查看[设计模式]系列内容请点击:https://www.jianshu.com/nb/45937362
定义:
采用共享对象的方法来有效地支持大量细粒度对象
理解:
对于很多情形来说,需要创建一个类的很多对象,而这些对象的状态(即自己固有的参数)都可以转化成外部状态,也就是说需要一系列的某个类的对象,可以根据这些对象的参数等将这些对象归类。从而对于一类只需要创建一个对象即可,当所有的能归为一类的时候就变成了单例模式。
举个栗子:在我们的Java语言中,我们创建两个字符串对象:
String str1=”hello”;
String str2=”hello”;
这时候我们比较这两个字符串的引用str1==str2为true。
也就是说str1和str2是同一个对象的两个引用而已。这就是使用了共享对象,也就是享元模式。
方法:
使用Map(也可以用其他)的key value键值对,每次使用的时候检索map,看看外部状态所在的对象是否已经存在,存在的话就直接取,不存在的话就创建新对象并且存入map,供其他程序使用。
适用场合:
当具备以下情况时:
1、 一个程序需要创建大量的对象,造成很大内存开销
2、 对象的大多数状态可以转变为外部状态
网友评论