单例模式,静态代理,内部类,Lambda表达式,异常

1.单例模式

作用:保证只能有存在一个对象

懒汉式:调用功能时才创建对象

饿汉式:类第一次加载完成之后就创建对象

实现步骤:1.构造器私有化  2.私有的静态的该类的引用  3.公共的访问方式

饿汉式:

单例模式,静态代理,内部类,Lambda表达式,异常_第1张图片

 

 

 懒汉式:

单例模式,静态代理,内部类,Lambda表达式,异常_第2张图片

 

 

 同步锁的作用:防止多线程各自创建对象导致单线程失败

例如:A线程使用SingleTon02,调用newInstance方法,发现需要创建对象,而这时B线程也使用了SingleTon02(在A还没创建好对象前),他也创建了新对象,最后A和B都有个对象,单线程失败。

Synchronize同步锁就是在A使用时锁住SingleTon02,这样B就用不了,只能等A用完。

2.静态代理,简单工厂模式

真实角色需要和代理角色实现相同的接口,代理需要有真实角色的引用,需要有代理行为

优点:1.减少与真实角色的交流,安全性上升,解耦,便于后期维护,代理角色可以扩展功能

3.内部类

内部类可分为成员内部类,静态内部类,局部内部类,私有内部类,匿名内部类

成员内部类:  内部类中可以使用外部类中所有的内容,包括私有的;  除了静态内部类以外的内部类中不可以定义静态的内容,除了静态的常量;  在外部类中使用内部类中的成员,通过内部类的对象

静态内部类:  如果在外部类中使用静态内部类中的成员,需要跟随内部类对象使用,如果使用静态内部类中的静态内容,直接类名.调用;   如果在静态内部类中使用外部类中的成员,都要跟随外部类对象使用,如果使用静态内容,在内部类中可以直接使用

私有的内部类:  成员内部类如果一旦被private关键字修饰,就是私有内部类;  私有内部类只能在当前所定义的外部类中使用,其他类中无法使用;  在外部类中可以通过内部类的对象使用内部类中的内容,保扩私有的内容

局部内部类:  局部内部类只能在当前所定义的方法中使用,其他方法,其他类中无法使用;  局部内部中使用到当前所在的方法的参数时,这个参数默认被final修饰;

匿名内部类:  如果某个实现类本身没有自己的作用,为了重写某些抽象方法的,可以使用匿名内部类进行代替

4.Lambda表达式

作用:用来简化匿名内部类;

前提: 函数式接口——只有一个抽象方法的接口就是函数式接口

检查函数式接口: @FunctionalInterface

语法:写法

  1. ()->{}  () ->抽象方法的参数列表  {} 抽象方法的方法体
  2. 如果方法体语句只有一句,前后的{}可以省略
  3. 如果抽象方法有参数,参数的数据类型可以省略
  4. 如果抽象方法参数只有一个,前后的()可以省略
  5. 如果语句体只有一句,但是是return的话,前后的{}与return关键字可以一起省略

5.异常

单例模式,静态代理,内部类,Lambda表达式,异常_第3张图片

 

throw : 制造异常

抛出异常: throws  把异常抛给上一层 ,谁用谁处理

异常捕获: try..catch(){}:

  • 一个try后可以跟多个catch
  • 如果try中的代码没有出现异常,正常执行完毕,执行finally中的内容结束
  • 如果try中出现异常,下面的代码不会执行,直接进入对应的catch中
  • finally无论是否出现异常,都会执行的代码

 

 

 

你可能感兴趣的:(单例模式,静态代理,内部类,Lambda表达式,异常)