设计模式:解决问题的一种行之有效的思想

单例设计模式:保证了一个类在内存中只能有一个对象,比如多程序访问一个配置文件,希望多程序操作都是同一个配置文件中的数据,那么就需要保证该配置文件对象的唯一性。

思路:1.怎么做才能保证这个对象是唯一的呢?其他程序通过new创建该类对象时根本无法控制个数,那么,就不让其他程序创建该类的对象了,因为不可以控制。2、不让其他程序创建,就该在本类中自己创建一个对象。3、该类将创建的对象对外提供,让其他程序获取并使用。

步骤:1、怎么实现不让其他程序创建该类对象呢?将该类中的构造函数私有化。

比如:class Single

{

   private Single();

}

2、在本类中创建一个本类对象

比如   class Single

{

   private Single(){};

         private  Single s = new Single();

}

3、定义一个方法,返回值是本类类型。让其他程序通过该方法就可以获得该类对象。但是这个方法一定是public的

比如:

class Single

{

 private Single(){};

 private static  Single s = new Single();

 public  static    Single getInstance()

       {

           return s;

       }

}

}

示例:

package com_package2;public class Single {private Single(){};private static Single s= new Single();public static Single Instance(){return s;}}

package com_package2;public class SingleDemo {/*** @param args*/public static void main(String[] args) {Single s1 = Single.Instance();// TODO Auto-generated method stub
}}

package com_package2;public class Single {private Single(){};private static Single s = new Single();public static  Single Instance(){return s;}}//饿汉式

package com_package2;public class Single2 {private Single2(){};private static Single2 s2 = null;public static Single2 Instance(){if(s2==null)s2=new Single2();return s2;}}//懒汉式,也叫做单例的延迟加载方式

开发的时候一般用第一种模式,饿汉式,因为在涉及到多线程的问题式,懒汉式会导致一系列的安全隐患,但是懒汉式是单例模式中的重要考察点

package com_package2;public class ArrayTool { private ArrayTool(){};//这句话就不让其他的程序再创建新的对象了。public static int  Max(int []arr){int max=0;for(int i=1;i<arr.length;i++){if(arr[i]>arr[max]){max=i;}else continue;}return arr[max];}
public static int Min(int []arr)
{int min=0;for(int i=0;i<arr.length;i++){if(arr[i]<arr[min]){min=i;}elsecontinue;}return arr[min];
}
}

package com_package2;public class ArraysDemo {/*** @param args*/public static void main(String[] args) {int[] a={1,7,4,5,3,3,6};int maxs =ArrayTool.Max(a);int mins = ArrayTool.Min(a);System.out.println("maxs="+" "+maxs);System.out.println("mins="+" "+mins);// TODO Auto-generated method stub
}}

maxs= 7
mins= 1

 

在上面的类中,由于两个方法都没有访问到特有变量,所有都可以加static所以在带有主函数的类中引用这些方法的时候就可以用类名直接调用。

转载于:https://www.cnblogs.com/mmlovejj/p/4466692.html

单例设计模式(懒汉式,饿汉式)相关推荐

  1. 23种设计模式:单例设计模式(饿汉式 VS 懒汉式)

    23种设计模式:单例设计模式(饿汉式 VS 懒汉式) 每博一文案 世事浮沉,有太多的责任需要我们担当,生活中总有些挫折和磨难,让我们觉得快要杠不住了. 但当我们咬牙坚持过那段难熬的时光后,发现并没有想 ...

  2. C++常用设计模式:单例设计模式(饿汉式、懒汉式)

    一.单例模式的设计套路: 思考:如何绕过常规的构造函数,提供一种机制来保证一个类只有一个实例. 1. 铺垫:静态成员函数特性的总结 使用static关键字修饰类成员函数时,就是把这个成员函数升级成了全 ...

  3. 单例设计模式(饿汉式VS懒汉式)

    什么是单例模式 单例(单个的实例) 1.所谓单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法 2.单例设计模式有两种方式:饿 ...

  4. Java面试常考之 单例设计模式(饿汉式单例、 懒汉式单例)

    所谓的单例设计指的是一个类只允许产生一个实例化对象. 对于单例设计模式也有两类形式:懒汉式.饿汉式. 饿汉式单例思想: 单例模式:表示任何类的对象有且只有一个. 首先控制对象的产生数量:将构造方法私有 ...

  5. 26、Java 简单实现单例设计模式(饿汉式和懒汉式)

    文章目录 一.概念 二.饿汉式 三.懒汉式 一.概念 ✏️[Singleton Pattern]如果一个类被设计成单例设计模式,则在整个应用程序运行过程中,该类只能存在一个实例. 二.饿汉式 思考:如 ...

  6. 单例设计模式懒汉式和恶汉式

    一,单例设计模式懒汉式和恶汉式 懒汉式在类加载时不初始化,延迟加载.(配置文件) 饿汉式在类加载时初始化,加载慢,获取对象快. 饿汉式是线程安全的, 懒汉式需要加synchronized,否则不安全. ...

  7. JAVA_Lesson8(传智播客笔记之继承、单例设计模式懒汉式、饿汉式)

    数组对象工具的建立(重要的是这种思想) 主函数是静态的,主函数需要调用的也需要static. 当有2个.java文件时,先编译含有函数功能的.java文件,再编译含主函数的.java文件.(因为主函数 ...

  8. php 懒汉式单例,单例模式:饿汉和懒汉

    接下来就说下单例模式了,这个在实际应用还是比较常用的! 首先,单例分为懒汉式和饿汉式: 饿汉式:类加载的时候,创建对象. 因此类加载速度慢, 线程相对安全 懒汉式:类加载的时候,不会创建对象,调用时才 ...

  9. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  10. 设计模式之单例设计模式(懒汉式)

    package july.star.thread22; /*** Teacher* 饿汉式:类一加载就加载* 懒汉式:需要时才加载* 面试题:单例模式的思想是什么,请用代码体现.* 开发:饿汉式(不会 ...

最新文章

  1. js插件---IUpload文件上传插件(包括图片)
  2. WEB学习 -相对定位、绝对定位、固定定位、z-index
  3. 展望二十一世纪第三个十年
  4. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程
  5. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。...
  6. SpringBoot+Vue表单文件上传
  7. python序列操作_序列操作
  8. HDOJ HDU 2088 Box of Bricks ACM 2088 IN HDU
  9. 优雅的实现Activiti动态调整流程(自由跳转、前进、后退、分裂、前加签、后加签等),含范例代码!...
  10. python云计算1_python云计算服务器
  11. 程序带来这些新的机会,创业新浪潮才刚开始!
  12. 中科大自主招生2018笔试数学之三
  13. 寒假集训_专题三题解_C - 六度分离
  14. 【戴师兄数分】excel基础操作——函数专题(个人笔记)
  15. revit怎么上色?教你revit综合工具快速【元素上色】
  16. 用诺模图可视化你的模型
  17. wia twain for java,c – 使用WIA或TWAIN扫描页面
  18. oracle篮球,篮球小王子!任嘉伦打篮球也不来赖,超爱11号
  19. 海尔总裁张瑞敏50句管理箴言
  20. PhotoZoom图像缩放方法效果对比

热门文章

  1. 用递归的方法,判断某个字符串是否为回文
  2. Win7虚拟Wifi热点(设置后能连接wifi但无法上网的可按后面提示操作)
  3. React Native/Android Studio (mac ) 查看 APP界面 对应 代码页 快捷方法
  4. springboot 集成 freemarker
  5. es6语法([...arr], set/map数据结构,数组扩展,箭头函数等)
  6. 为Android Studio 项目手动下载gradle
  7. BigData | 一文带你搞清楚“数据倾斜”
  8. 【R语言实用技巧】类别变量的顺序自定义设置
  9. R语言构建RFM模型了解一下~~~
  10. 创建一个Django项目