设计模式之单例模式
来源:互联网 发布:淘宝调研网站 编辑:程序博客网 时间:2024/06/05 03:31
单例设计模式:保证当前类有且仅有一个对象,不允许被创建多个实例
分类:饿汉式、懒汉式
实现思路:构造函数私有化
声明一个本类对象静态引用
提供获取当前实例的静态方法
/**
*单例模式基本思想:在类里面将构造方法私有化,在类里面提供类唯一的对象,
* 创建一个方法,该方法返回的就是这个对象(单例模式只能用于单线程,
* 如果有多个线程同时调用类的方法来构造对象,那么它构造的对象可能就不是同一个;
* 因此要给返回对象的那个方法加synchronized关键字,防止一个线程在创建对象的时候
* 另一个线程也在创建该对象)
*/
单例模式之类图:
饿汉式浅析:
package SingleExampleModel1;public class Student {public String name;//1.构造方法私有化private Student(){}//提供唯一对象private static Student student = new Student();//提供一个get实例函数,返回对象public static Student getInstance(){return student;}}
package SingleExampleModel1;public class Test {/** * @param args */public static void main(String[] args) {Student stu1 = Student.getInstance();stu1.name = "aaa";Student stu2 = Student.getInstance();stu1.name = "bbb";Student stu3 = Student.getInstance();stu1.name = "ccc";}}
浅析单例模式之懒汉式(多线程问题):
package SingleExampleModel;public class Student {public String name;//1.构造方法私有化private Student(){}private Student(String name){this.name = name;}//2.提供唯一的对象private static Student stu;//3.提供一个get实例的函数public static synchronized Student getInstance(String n){if(stu==null){stu = new Student(n);}return stu;}}
测试类:
package SingleExampleModel;public class Test {/** * @param args */public static void main(String[] args) {new Thread(){public void run() {Student stu = Student.getInstance("abc");};}.start();new Thread(){public void run() {Student stu1 = Student.getInstance("abc");};}.start();new Thread(){public void run() {Student stu2 = Student.getInstance("abc");};}.start();}}
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- SQL_Oracle 表中ID字段的自动递增
- Highcharts基础教程(一):Highcharts 的主要组成
- XML、JSON及其解析详解
- gvim配置(Windows版)
- CentOS 7 上部署Mono 4 和Jexus 5.6
- 设计模式之单例模式
- log4j基础详解及示例
- mapreduce(七):hadoop二次排序
- Drop Table恢复:Oracle中误删表后还原表
- 【转】oracle中exp,imp的使用详解
- 权威大数据应用解决方案
- Android MVP初试
- Failed to load class "org.slf4j.impl.StaticLoggerBinder"异常解决办法
- 3.While observing the index statistics, you find that an index is highly fragmented, thereby resulti