首页 > 其他分享 >48-单例设计模式

48-单例设计模式

时间:2023-02-16 15:57:33浏览次数:37  
标签:name 48 单例 private Cat static 饿汉 设计模式 public

●单例模式应用实例
步骤如下:
1)构造器私有化=》防止直接new
2)类的内部创建对象
3)向外暴露一个静态的公共方法。getInstance

饿汉式
public class Test {
    public static void main(String[] args) {
        Cat cat = Cat.getCat();
         System.out.println(cat);
    }
}
class Cat {
  private String name;
  private static Cat a = new Cat("小红");

    private Cat(String name) {
        this.name = name;
    }
    public static Cat getCat (){
        return a;
    }
}
懒汉式
public class Test {
    public static void main(String[] args) {

    }
}
class Cat {
    private String name;
    private static Cat a;

    private Cat(String name) {
        this.name = name;
    }

    public static Cat getCat() {
        if (a == null) {
            a = new Cat("小红");
        }
        return a;
    }
}

饿汉式VS懒汉式
1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而懒汉式是在使用时才创建。
2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题。
3.饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。
4.在我们javaSE标准类中, java.lang.Runtime就是经典的单例模式。

标签:name,48,单例,private,Cat,static,饿汉,设计模式,public
From: https://www.cnblogs.com/PedroPascal/p/17127025.html

相关文章

  • 什么是python的设计模式
    一.什么是python的设计模式?软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需谨记一点:设计模......
  • Spring-设计模式
    1.1开闭原则开闭原则(open-closedprinciple,OCP)是指一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调用抽......
  • 再有人问你抽象工厂设计模式,把这篇文章丢给他
    概述抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一组产品。抽象工厂模式定义如下:抽象工......
  • js设计模式
    实体展现(系统本身)工具(设计模式)基础(组织模块,设计沟通,代码质量)设计模式创建型(创建元素)工厂:生产同类型商品建造者:独立生产商品单例:vue-router结构......
  • 【Spring IOC】【二】容器源码解析- 获取单例 Bean
    1 前言在本篇文章中,我们将会详细分析BeanFactory的getBean(String)方法实现细节及所调用的方法。2 源码分析首先我们先通读一下doGetBean方法,了解里边重点的几个步......
  • c++ 程序通用多线程单例设计 c++ web 框架设计经验谈
    设计c++web框架时候,想要一个框架缓存类,很多通用缓存类是用字符保存,作为框架内置就不要序列和反序列了,因为框架内部使用。想给自己的paozhuc++web框架添加缓存类,参考......
  • Oracle宕机之PMON (ospid: 248987): terminating the instance due to error 484(另附h
    数据库版本:11.2.0.4RAC环境操作系统版本:AsianuxServerrelease7.3数据库报错分析接到业务消息,应用无法访问,开发人员查看日志后发现无法连接数据库。查看数据库进程......
  • 写给准备跳槽的小伙伴们的设计模式——工厂方法设计模式
    概述工厂方法模式(FactoryMethod),定义一个创建产品对象的工厂接口,让工厂子类决定实例化那一个产品类。我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果......
  • 设计模式之模版方法模式的钩子方法
     publicabstractclassSoyaMilk{//模版方法可以做成finaL,不让子类去覆盖finalvoidmake(){select();if(customerWantCondiments()){......
  • 网关采集电表_RS485_1376.1透传
                        ......