一、设计模式
概念:是一些前人总结出来的值得学习的编程”套路”,设计模式一共有23种
单例设计模式:确保代码中本类的实例只有一个
实现思路:
方案一:饿汉式
1)把本类的构造方法私有化—为了不让外界调用构造函数来创建对象
2)通过本类的构造方法创建对象,并把这个对象也私有化,为了防止外界调用
3)提供一个公共且静态的方法,返回刚刚创建好的对象
注意:公共方法需要设置成静态–需要跳过对象,通过类名直接调用这个返回本类对象的公共方法
方案二:饿汉式
延迟加载的思想:我们有的时候有些资源并不是需要第一时间就创建出来,所以需要延迟到需要时再创建,这样既可以提示性能,又可以节省资源
1)把本类的构造方法私有化–为了不让外界调用构造函数来创建对象
2)创建了一个本类类型的引用类型变量【这个变量后续用来保存创建出来的对象的地址值】
3)提供一个公共且静态的方法,返回刚刚创建好的对象
注意1:这个公共的方法里,需要做判断
1.如果变量的值为初始值null:说明之前没有创建过对象,创建对象后再将对象的地址值赋值给引用类型变量,并把它返回
2.如果引用类型的变量值不为null,说明:之前已经创建过对象了,这个引用类型变量保存就是地址值,本次不再新建对象,直接返回
注意2:由于有共享数据,并且多条语句操作这个single2,所以注意同步
二、注解
1.JDK自带的注解(5个)
2.元注解
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
表示被描述的注解的声明周期:注意值只能三选一
@Retention(RentionPolicy.RUNTIME/SOURCE/CLASS)
3.自定义注解
三、反射
1.反射的概念
当我们想要使用别人的东西的或者查看某些资源的时候,可以使用反射技术
自比如,开发时候,有时并不能直接看到源代码,也可以通过反射获取
2反射的前提:获取字节码对象
在Java中可以将对象分为两类:字节码对象和实例对象
字节码对象获取的三种方式:
1)类名.class
2)Class.forName(“目标的全路径”)
3)目标类对象.getClass()
注意:字节码对象是获取目标对象所有信息的入口
3.反射的常用方法
1)获取包对象:clazz.getPackage()
2)先获取包对象,再获取包对象的名字:clazz.getPackage().getName()
3)获取类名:
clazz.getName() –打印的是全路径名
clazz.getSimpleName() –打印的只有目标类的类名
4)获取目标类的所有方法:Method[] ms = clazz.getMethods();