84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
看了下,解释说这是「享元模式」,还是不太理解,求问这样有什么好处,毕竟这样基于对象的要占用好多内存的。
ringa_lee
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
如果你在一个程序里大量用到了某一个整数,比如1,假设这个整数对象占用内存100kB,而你用了100万次,那么这些1占用的内存仍然是100kB。
1
如果是32位机上的C语言,一个整数4byte,100万个整数占用的内存大小是4B * 1000k,也就是4MB。
怎么说呢,这个特性不能说是好处,也不能说是坏处,这两种模式在不同的场景下各有优劣。
省内存呗。变量之间,或者实参形参之间传递的时候不用重新复制一份。想到写c++的时候,一不注意就可能将一个很大的vector复制一份也是醉了。
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
如果你在一个程序里大量用到了某一个整数,比如
1
,假设这个整数对象占用内存100kB,而你用了100万次,那么这些1
占用的内存仍然是100kB。如果是32位机上的C语言,一个整数4byte,100万个整数占用的内存大小是4B * 1000k,也就是4MB。
怎么说呢,这个特性不能说是好处,也不能说是坏处,这两种模式在不同的场景下各有优劣。
省内存呗。变量之间,或者实参形参之间传递的时候不用重新复制一份。想到写c++的时候,一不注意就可能将一个很大的vector复制一份也是醉了。