设计模式 24种设计模式总览 单例模式基础使用
目录
一 24种设计模式有哪些
因为社会化的分工越来越细,对象的创建 和 对象的使用 分开就成为了必然趋势.
对象的创建 会消耗掉系统的很多资源,所以单独对对象的创建进行研究.
六个创建型模式:高效创建对象
1 简单工厂模式
2 工厂方法模式
3 抽象工厂模式
4 创建者模式
5 原型模式
6 单例模式

七个结构型模型:对象的组成以及对象之间的依赖关系

十一个行为型模式:研究 对象的行为,提高对象之间的协作效率

二 单例模式介绍
构造函数私有化,对外提供函数
一个类有且仅有一个实例,并且自行实例化向整个系统提供
解决的问题:
提供全局需要使用的 唯一的数据访问
关键点:
1 某个类只能有一个实例
2 它必须自行创建这个实例
3 它必须自行向整个系统提供这个实例

单例模式UML
成员:静态的实例
方法:私有构造,静态的获取实例方法

创建的时机分类:
饿汉式:在类加载时创建
懒汉式:在使用时做判断,如果需要再创建
三 代码
饿汉式
package com.example.myjava;
//饿汉式
public class SingleTonHungry {
private static SingleTonHungry singleTonHungry = new SingleTonHungry();
private SingleTonHungry() {
}
public static SingleTonHungry getInstance(){
return singleTonHungry;
}
}
懒汉式
package com.example.myjava;
//懒汉式
public class SingleTonLazy {
private static SingleTonLazy singleTonLazy = null;
private SingleTonLazy() {
}
public static SingleTonLazy getInstance(){
if(singleTonLazy == null){
singleTonLazy = new SingleTonLazy();
}
return singleTonLazy;
}
}
main方法
package com.example.myjava;
public class SingleTonMain {
public static void main(String[] args) {
System.out.println("这是singleton");
System.out.println("这是SingleTonHungry:"+SingleTonHungry.getInstance());
System.out.println("这是SingleTonLazy:"+SingleTonLazy.getInstance());
//再打印一遍,确认是同一个实例
System.out.println("这是SingleTonHungry:"+SingleTonHungry.getInstance());
System.out.println("这是SingleTonLazy:"+SingleTonLazy.getInstance());
}
}
运行结果
可以看到两次打印懒汉,两次打印饿汉是相同的实例:单例模式
