设计模式(java)- 单例模式

之前学习是简单工厂模式、工厂方法模式、抽象工厂模式,复习一下

简单工厂模式

简单工厂模式大概就是创建一个简单工厂类,由工厂类实例化对象。由参数决定实例化那个类

工厂方法模式

创建一个抽象工厂类,里面包含一个抽象方法。由这个工厂去生产产品,具体的就是实现类实现工厂,并完成抽象方法的功能实现(如月饼抽象生产类,南方月饼类实现月饼抽象生产类,北方月饼实现月饼抽象生产类,等等)。调用不是由参数决定,是由创建者决定

抽象工厂模式

创建抽象工厂类生产工厂,创建抽象产品类生产产品,并各自实现。形成产品族(一个大的家族)
对于之前的理解模糊可以看这个:https://www.zhihu.com/question/20367734

一、 对单例模式的理解

单例模式就像太阳一样,只有一个。在使用的时候,只能实例化一次。不能多次实例化。
二、代码实现

// 单例模式  太阳(synchronized,重量级)
public class sun {
    private static sun s = null;
    
    private sun() {}
    // 单例模式  这种方式多线程时会出现混乱的情况,不建议使用
    public static sun getSun() {
        if (s == null) {
            s = new sun();
        }
        return s;
    }
    // (同步方法)添加同步锁,在不考虑性能的时候可以使用该方法
    public static synchronized sun getSunSyn() {
        if (s == null) {
            s = new sun();
        }
        return s;
    }
}
// 月亮(双重检查加锁)
class moon {
    // volatile 当moon初始化为实例时,能保证多个线程正确的处理moon变量
    private volatile static moon m;
    
    private moon() {};
    //  减少synchronized的使用
    public static moon getMoon() {
        if (m == null) {
            synchronized (moon.class) {
                if (m == null) {
                    m = new moon();
                }
            }
        }
        return m;
    }
}
// 地球(急切)
class earth{
    // 在静态初始化器中创建单件,这段代码保证了线程安全
    private static earth e = new earth();
    
    private earth(){};
    // 在jvm 加载这个类的时候创建此唯一的单例模式。
    public static earth getEarth() {
        return e;
    }
}

三、UML类图

单例模式

四、笔记

oo设计原则

封装变化

多用组合、少用继承

针对接口编程、不针对实现编程

为对象之间的松耦合设计而努力

类应该对扩展开发、修改关闭

依赖抽象、不要依赖具体类
单例模式定义:
确保一个类只有一个实例,并提供全局访问点

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,796评论 0 14
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,984评论 1 15
  • 文章部分内容转载自:http://blog.csdn.net/zhangerqing 一、设计模式的分类 总体来说...
    j_cong阅读 2,087评论 0 20
  • 2018年4月23号 星期一 晴大风 1 一大早我被一声大叫声吵醒,这周该我们商学院去升旗了,室友得去站...
    一眨一眨亮星星阅读 183评论 0 0
  • 思佳 大家好,由于下午才知道主题是关于学习方法论,准备的也不是很充分。今晚分享的是《精进》的第4章,关于学习的内容...
    汐米阅读 489评论 0 1