设计模式(GoF)—— 单例模式(Singleton)

1、饿汉式实现单例模式
package com.muluo.singleton;
/*
*
* 单例模式:单个实例
* 饿汉模式方法创建
*
* 饿汉式与懒汉式的区别:
* ①:懒汉式:好处,延迟对象的创建,              坏处: 线程不安全的(目前这个不安全,不建议写)
* ②:饿汉式:坏处,对象加载时间过长,            好处: 线程安全的 java.lang.Runtime
*
* 单例模式的运用:日志,数据库的链接池,windows下的回收站
* */
// 饿汉式实现单例模式 (一上来就创建一个对象)
public class singletonTest1 {
    public static void main(String[] args) {
        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();
        System.out.println(bank1 == bank2); // true 证明两个实例的地址一样,即为一个对象
    }
}
class Bank{
    // ①私有类的构造器
    private Bank() {

    }
    // ②内部创建类的对象
    // ④要求次对象也必须声明为为静态的
    private static Bank instance = new Bank();

    // ③提供公共的静态方法,返回实例对象:如果不是静态的,那么调用只能创建一个实例对象去调用次此方法,
    public static Bank getInstance(){
        return instance;
    }
}
2、懒汉式实现单例模式
package com.muluo.singleton;

import sun.security.jca.GetInstance;

// 懒汉式实现单例模式 用的时候才创造
public class singletonTest2 {
    public static void main(String[] args) {
        Order order1 = Order.getInstance();
        Order order2 = Order.getInstance();
        // 地址一样,说明是同一个对象,== 用于引用数据类型比较的是地址
        System.out.println(order1 == order2);
    }
}
class Order{

    // 私有类的构造器
    private Order(){

    }
    // 声明当前类的对象,不进行初始化
    // 此对象也必须为静态的
    private static Order instance = null;

    // 声明一个静态的返回类的对象方法
    public static Order getInstance(){
        // 如果不加判断语句则会调用一次就创建一次
        if(instance == null) {
            instance = new Order();
        }
        return instance;
    }
}

3、使用同步机制将单例模式中的懒汉式改写为线程安全的。
class Bank{

    private Bank(){}

    private static Bank instance = null;

    public static Bank getInstance(){
        //方式一:效率稍差
//        synchronized (Bank.class) {
//            if(instance == null){
//
//                instance = new Bank();
//            }
//            return instance;
//        }
        //方式二:效率更高
        if(instance == null){

            synchronized (Bank.class) {
                if(instance == null){

                    instance = new Bank();
                }

            }
        }
        return instance;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
设计模式GOF)是一本经典的设计模式教科书,由四位软件工程师(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)合著。该书首次于1994年出版,至今仍被广泛用于软件设计和开发中。 该书一共介绍了23种常用的设计模式,这些模式分为三个主要的分类:创建型模式、结构型模式和行为型模式。 创建型模式主要涉及对象的创建机制,包括单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式。这些模式能够帮助开发人员根据需求来选择合适的创建对象的方式,从而提高系统的灵活性和可复用性。 结构型模式主要关注对象的组合方式和类之间的关系,包括适配器模式、桥接模式、装饰者模式、外观模式、享元模式和组合模式。这些模式能够帮助开发人员设计出高内聚、低耦合的系统结构,提高系统的扩展性和维护性。 行为型模式主要关注不同对象之间的交互方式,包括策略模式、观察者模式、迭代器模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。这些模式能够帮助开发人员实现对象之间的灵活通信,并且提供了可维护的系统行为。 设计模式GOF PDF是一本非常重要的参考书,它提供了详细的设计模式概念和实现代码示例。通过学习和理解这些模式,开发人员能够更好地应对复杂的软件设计和开发任务,提高代码质量和开发效率。 总之,设计模式GOF PDF是一本值得学习和阅读的书籍,对于软件开发人员来说具有重要的指导意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值