第一部分:享元设计模式
一、示例代码
结果分析:package day.day17; public class FlyweightPatternDemo { public static void main(String[] args){ String str1 = "java"; String str2 = "java"; Integer i1 = 100; Integer i2 = 100; System.out.println(str1==str2);//运行结果:true System.out.println(i1==i2);//运行结果:true } }
1、String对象存在于常量池中,当该字符串在内存中出现过,就不会再在内存中开辟空间。
2、Integer对象的自动装箱,当数值在byte范围之内时,数值若出现过就不会再开辟空间。
二、享元模式
1、享元模式(Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;
2、它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
三、何时使用
如果一个应用程序使用了大量的对象,而这些对象造成了很大的存储开销的时候就可以考虑是否可以使用享元模式。如,系统中的文件夹图标。
第二部分:枚举
一、枚举作用介绍
1、在实际问题中,有些变量的取值被限定在一个有限的范围内,如一年只有12个月,枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就会报错。
2、枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段服务实现这一目标。
如:要定义星期几或月份的变量,假设用1-7分别表示星期一到星期日,在定义时可以会写成int weekday = 0。