单例设计模式

单例设计模式概述
    单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供
    
优点:
    在系统内存中只存在一个对象,因此可以解决系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能
    
缺点:
    没有抽象层,因此扩展很难
    职责过重,在一定程度上违背了单一职责

package com.singleton;
/*
* 单例模式的思想:
* 内存中只能有一个该对象
* 分析:
* 只能有一个对象,说明不能对外提供构造
* 对象只能由自己提供
* 外界怎么访问到你的方法呢?不能实例化你对象。所以获得方法是静态
* 方法静态所以属性也必须静态,但是属性不能直接被外界拿到啊。所以属性加私有
*
* 现在这种单例模式称为饿汗式
* 表现在:这个类还没使用就创建了一个需要的而对象。
*/
public class Student {
private Student(){ }
private static Student s=new Student();
public static Student createInstance(){
return s;
}
}
package com.singleton; public class StudentDemo {
public static void main(String[] args) {
Student s=Student.createInstance();
Student s1=Student.createInstance();
System.out.println(s1==s);
System.out.println(s1);
System.out.println(s);
}
}
package com.singleton;
/*
* 懒汉式
* 表现在:
* 1、延迟加载(需要的时候才创建对象)
* 2、线程不安全,通常需要加上一下同步锁
*/
public class Teacher {
private Teacher(){ }
private static Teacher t=null;
public static synchronized Teacher createInstance(){
if(t==null){
t=new Teacher();
}
return t;
}
}
package com.singleton; public class TeacherDemo {
public static void main(String[] args) {
Teacher t=Teacher.createInstance();
Teacher t1=Teacher.createInstance();
System.out.println(t==t1);
System.out.println(t1);
System.out.println(t); }
}
单例模式例子:
package com.singleton; import java.io.IOException; /*
* Runtime
* 这个类是单例模式
* 一个exec(String command)可以执行dos命令
*
*/
public class RuntimeDemo {
public static void main(String[] args) throws IOException {
Runtime r=Runtime.getRuntime();
// 打开计算器 r.exec("calc");
//打开记事本 r.exec("notepad");
// r.exec("shutdown -s -t 10000");
r.exec("shutdown -a");
}
}

singleton单例模式的更多相关文章

  1. Singleton 单例模式 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. 设计模式01: Singleton 单例模式(创建型模式)

    Singleton 单例模式(创建型模式) 动机(Motivation)当进行软件开发是会有这样一种需求:在系统中只有存在一个实例才能确保它们的逻辑正确性.以及良好的效率.这应该是类设计者的责任,而不 ...

  3. Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序执行生命周期中,使用了单类模式的类仅仅能有一个实例对象存在。

                                                                                                        ...

  4. SingleTon单例模式总结篇

    在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式.适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象. 一,懒汉式: 其特点是延迟加载,即当需要用到此单一实 ...

  5. (转)Singleton 单例模式(懒汉方式和饿汉方式)

    原文地址:http://www.cnblogs.com/kkgreen/archive/2011/09/05/2166868.html 单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某 ...

  6. 单例模式简单解析--Singleton 单例模式(懒汉方式和饿汉方式)

    单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 关键点: 1)一个类只有一个实例       这是最基本 ...

  7. Java Singleton 单例模式

    大家可能还听过 Singleton  也就是单例模式 这个单例模式要求 在程序的运行时候   一个程序的某个类 只允许产生一个 实例 那么 这个类就是一个单例类 Java Singleton模式主要作 ...

  8. 【转】Singleton单例模式

    对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器. ...

  9. 设计模式C++学习笔记之三(Singleton单例模式)

    单例模式看起来也蛮简单的,就是在系统中只允许产生这个类的一个实例,既然这么简单,就直接贴代码了.更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com. 3.1.解释 main ...

随机推荐

  1. delphi一些小技巧 从别处看到

    开发环境--------    Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件.安装好Delphi ...

  2. Windows 7 常用快捷键 命令

    Win+E:  打开新的windows资源浏览器 Win+F:搜索文件或文件夹 Win+R:打开运行窗口 Win + D:显示桌面 Win + M:最小化所有窗口 Ctrl+Shift+N: 新建文件 ...

  3. linux下ssh/scp无密钥登陆方法

    一.双方机器都是root用户登陆方法 A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A ...

  4. C#产生不重复的随机数并生成随机文件名

    本文转自:http://blog.ciznx.com/post/csharprandomnumberandrandomfilename.aspx 在项目中会遇到需要批量生成文件的时候,比如 asp.n ...

  5. 一个简单的ObjC和JavaScript交互工具

    https://github.com/changjianfeishui/XBWebBridge ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只 ...

  6. Java-在线聊天系统-非线程

    一.概述 1.目标:建立基于tcp协议的聊天系统 2.思路:用java socket编程 二.代码 1.ChatServer.java import java.io.DataInputStream; ...

  7. 【总结】java命令解析以及编译器,虚拟机如何定位类

    学Java有些日子了,一直都使用IDE来写程序.这样的好处就是能让我连如何用命令行编译,解释执行Java源代码都不知道,就更不清楚JDK中的编译器和虚拟机(包含字节码解释器)是如何定位到类文件的.悲哀 ...

  8. js网页滚动条滚动事件实例分析

    本文实例讲述了js网页滚动条滚动事件用法.分享给大家供大家参考.具体分析如下: 在做js返回顶部的效果时,要监听网页滚动条滚动事件,这个事件就是:window.onscroll.当onscroll事件 ...

  9. LINUX下的MYSQL默认表名区分大小写

    让MYSQL不区分表名大小写的方法其实很简单: 1.用ROOT登录,修改/etc/my.cnf,该文件的路径也可能是/usr/my.cnf. 2.加入一行:lower_case_table_names ...

  10. SQL 随笔

    自动生成10位ID DECLARE @num INT ) )) ) Date的运算 DECLARE @StartDate DATETIME , GetDate()) --add day PRINT @ ...