1.泛型
参数化类型,在数据类型不确定时使用
定义格式<字母>
T Type表示类型
K V 分别表示键值
E 元素element
? 表示不确定类型
泛型类:声明时使用泛型 class Demo<T>
泛型接口:接口中泛型字母只能使用在方法中,不能在全局常量
泛型方法:public static <T> void test<T,a>(){ }
只能访问对象的信息,不能修改信∂息
通配符:?extends 代表<= ?super代表>=
2.单例
饿汉:1.创建类私有构造
2.创建该类型的私有静态实例,并直接初始化
3.创建公有静态方法返回静态实例对象
懒汉:
- //懒汉式单例类.在第一次调用的时候实例化自己
- public class Singleton {
- private Singleton() {}
- private static Singleton single=null;
- //静态工厂方法
- public static Singleton getInstance() {
- if (single == null) {
- single = new Singleton();
- }
- return single;
- }
- }
1.创建类私有构造
2.创建静态该类实例对象
3.公有静态方法,判空后初始化,返回实列对象
用双重检查锁进行二次判空
3.观察者模式
定义对象一对多依赖关系,使得每当一个对象发生改变时,依赖于它的对象都会得到通知并更新
抽象目标(抽象类或者接口):把对所有观察者对象的引用保存在一个集合中。add,remove增删观察者,notify
具体目标:发生改变,通知观察者使用update,实现notify
抽象观察者(接口):得到通知时更新自己void update();
具体观察者:实现update
回调:在A类中定义了一个方法,这个方法用到了一个接口和该接口中的抽象方法,但没实现。B类实现该抽象方法后传递给A,供A调用
4.工厂模式
简单工厂:缺点是在增加新的产品时,必须修改工厂类
工厂类:负责创建所有实例,可以被外界调用来创建所需对象。
抽象产品类:工厂类所创建对象的父类
具体产品类:工厂类创建的具体对象
抽象工厂:拓展新的产品困难,需要修改抽象工厂的接口
抽象工厂类:具体工厂必须实现或者继承
具体工厂类:创建具体对象的类
抽象产品类:具体产品父类
具体产品类:工厂类创建的具体实例对象