设计模式
单例模式
通常作为程序中存放配置信息的载体,因为它能保证其他对象读到一致的信息。
特点:
1.只能有一个实例。
2.必须自己创建自己的唯一实例。
3.必须给所有其他对象提供这一实例。
1.饿汉式:
class Singleton1 {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton1(){}
//2,创建本类对象
private static Singleton1 s = new Singleton1();
//3,对外提供公共的访问方法
public static Singleton1 getInstance() { //获取实例
return s;
}
}
2.懒汉式,单例的延迟加载模式:开发中不怎么用到,用于面试笔试
class Singleton2 {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton2(){}
//2,声明一个引用
private static Singleton2 s = null;
//3,对外提供公共的访问方法
public static Singleton2 getInstance() { //获取实例
if(s == null) {
s = new Singleton2();
}
return s;
}
}
饿汉式和懒汉式的区别
1.饿汉式是空间换时间,懒汉式是时间换空间。
2.在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象。
3.枚举
enum Singlenton3{
Singlenton3
}
4.静态内部类
class Singleton4 {
private Singleton4(){}
public static SingletonHolder {
private static final Singleton4 INSTANCE = new Singleton4();
}
public static final Singleton4 getInstance(){
return SingletonHolder.INSTANCE;
}
}
5.静态代码块
class Singleton5(){
static{
Singleton5 singleton5 = new Singleton5();
}
}
工厂模式
为创建对象提供过度接口,以便将创建对象的具体过程屏蔽并隔离起来,达到提高灵活性的目的。
可分三类,且从上到下逐步抽象,更具一般性。
1.简单工厂模式(Simmple Factory):静态工厂模式。不利于产生系列产品。
2.工厂方法模式(Factory Method):多形性工厂。
3.抽象工厂模式(Abstract Factory):工具箱。产生产品族,但不利于产生新的产品。
适配器模式
适配器
* 在使用监听器的时候, 需要定义一个类事件监听器接口。
* 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐。
* 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可。
* b.适配器原理
* 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
* 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
* 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.