设计模式 24种设计模式总览 单例模式基础使用

目录

一 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());
    }
}

运行结果

可以看到两次打印懒汉,两次打印饿汉是相同的实例:单例模式

关于单例模式解决线程安全问题请点这里