本文主要内容:
(1)设计模式分类
(2)单例模式
(3)饿汉式与懒汉式对比
1.设计模式
设计模式是一种设计经验的总结,是用来解决某些场景下的某一类问题(解决方案),有了设计模式之后,可以让代码更容易被理解,确保了复用性、可靠性、可扩展性。
2.设计模式分为三类
(1)创建型模式(五种)——>用于解决对象创建的过程
单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式
(2)结构型模式(七种)——>把类或对象通过某种形式结合在一起,构成某种复杂或合理的结构
适配器模式、装饰者模型、代理模式、外观模式、桥接模式、组合模式、享元模式
(3)行为型模式(十一种)——>用来解决类或对象之间的交互,更合理的优化类或对象的关系
观察者模式、策略模式、模板模式、责任链模式、解析器模式、命令模式、状态模式、备忘录模式、访问者模式、中介模式、迭代字模式
3.单例模式(Singleton)
(1)一个类只创建一个对象,有效的减少内存占用的空间
(2)设计一个系统,比如是百度。主要是搜索引擎。创建一个百度对象,调用搜索的方法做事情,同一时间会有很多人在使用这个系统,可以创建多个对象,通过对象调用方法。而单例模式是只创建一个对象,堆内存中只开辟一个空间,调用一次方法(即临时执行一次),方法执行完空间就回收了。
public class Singleton{
//通过设计,这个类只能创建一个对象
//每一个类都有默认的无参数的构造方法——公有的,在外面可以随意创建对象
//让构造方法变为私有——保证外部不可以随便创建对象
private Singleton(){
//在本类中的某个成员位置上创建唯一的一个对象
}
//以下四个位置,那个可以创建对象?
//属性——可以
//方法——不行,每次执行都会创建一个对象,保证不了唯一
//构造方法——不行,私有的,本身就是个构建过程
//块——不行,没有返回值,创建了对象也无法给别人使用
/*
//public Singleton single = new Singleton();
//public static void main(Dtring[] args){
// new Singleton();//栈溢出异常,如图所示***
}*/
//在当前类中存在一个私有的静态属性
private static Singleton single = new Singleton();//直接为立即加载,饿汉式
//提供一个获取单个对象的方法给用户,返回值将对象返回
public static Singleton getSingleton(){
return single;
}
}
//延迟加载——懒汉式
public class Singleton{
private Singleton(){
}
private static Singleton single;
public static Singleton getSingleton(){
if(single == null){
return new Singleton();
}
return single;//引用类型
}
}
4.单例模式实现
(1)私有的构造方法
(2)私有的静态的当前类对象作为属性
(3)公有的静态的方法返回当前类对象
5.饿汉式与懒汉式的对比
饿汉式(立即加载):对象启动时就加载了,不会产生对象没有就拿来使用的问题,空指针异常,启动项目加载的对象过多,有些还没有使用,产生服务器承载压力的问题
懒汉式(延迟加载):对象什么时候用到了才会加载,可能由于没有操作好,导致异常(严谨),启动项目时候只有需要的加载,不需要的还没有创建,不会浪费空间
生命周期托管:对象加载的过程交给别人,而单例对象是别人帮我们处理