- 单例模式
- 保证类在内存中只有一个对象
- 使用原则
私有构造方法(不让其它类来创建本类对象)
在本类中创建一个本类对象或向外提供一个创建本类对象的共有方法 - 编码方式
饿汉模式
class Singleton {
//1,私有构造函数
private Singleton(){}
//2,创建本类对象
private static Singleton s = new Singleton();
//3,对外提供公共的访问方法
public static Singleton getInstance() {
return s;
}
}
懒汉模式
class Singleton {
//1,私有构造函数
private Singleton(){}
//2,声明一个本类的引用
private static Singleton s;
//3,对外提供公共的访问方法
public static Singleton getInstance() {
if(s == null)
//线程1,线程2
s = new Singleton();
return s;
}
}
静态常量
class Singleton {
private Singleton() {}
public static final Singleton s = new Singleton();//final 是最终的意思,被final 修饰的变量不可以被更改
}
- 简单工厂模式
- 又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
- 优点:客户端不需要在负责对象的创建,从而明确了各个类的职责
- 缺点:这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护
- 工厂方法模式
- 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建由具体工厂类实现
- 优点:客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
- 缺点:需要额外的编写代码,增加了工作量
- 适配器设计模式
- 什么是适配器
- 适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在
- 适配器分类(根据实现方式不同),以USB接口,PS2接口,及适配器类说明
- 类适配器
- 原理:通过继承来实现适配器功能
- 图解
- 对象适配器
- 原理:通过组合来实现适配器功能
- 图解
- 实例讲解:
我手中有个ps2插头的设备,但是主机上只有usb插头的插口,怎么办呢?弄个转换器,将ps2插头转换成为USB插头就可以使用了。
接口Ps2:描述ps2接口格式
接口Usb:描述USB接口格式
类Usber:是接口Usb的实现类,是具体的USB接口格式
Adapter:用于将ps2接口格式转换成为USB接口格式
- 接口适配器
- 原理:通过抽象类来实现适配
- 使用场景
- 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写,这很繁琐,适配器简化了这些操作
- 使用步骤举例
- 创建一个适配器类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的
- 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
- 定义监听器时继承适配器, 只重写需要的方法就可以了.
- 图解
- 类适配器
- 什么是适配器