zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

      单例模式(创建型)

         单例模式是一种对象创建型模式,使用单例模式,可以保证一个类只生成唯一的一个实类对象;也就是说一个应用程序中只会存在一个实类对象;保证一个类,只有一个实类存在,同时提供能对该实例加以访问的全局访问方法

          单例模式分为饿汉模式和懒汉模式

            创建一个类

    package Singletonmodel;
    /*
     * 单例模式的 重点
     * 		一个类的实类有且仅有一个的时候
     */
    public class Person {
    	private Person() {}
    	private String name;
    	private int age;
    	private static  Person person=null;
    	public int getAge() {
    		return age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    }
    

      

            饿汉模式:在声明的位置进行创建

    package Singletonmodel;
    /*
     * 单例模式的 重点
     * 		一个类的实类有且仅有一个的时候
     */
    public class Person1 {
    	//不能创建对象
    	private Person1() {}
    	private String name;
            //使用final修饰成为常量不能被修改
    	private static final Person1 person1=new Person1();
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public static Person1 getPerson (){//饿汉实现方法
    		return person1; 
    	}
    }
        
    

            懒汉模式:在方法内部进行创建(使用线程锁来控制当前类你没有使用完成别的类无法进行访问)

    package Singletonmodel;
    /*
     * 单例模式的 重点
     * 		一个类的实类有且仅有一个的时候
     */
    public class Person2 {
    	//不能创建对象
    	private Person2() {}
    	private String name;
    	private static Person2 person2=new Person2();
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public static Person2 getPerson (){//懒汉实现方法
    		if (person2==null) {
    			synchronized (person2.getClass()) {
    				person2=new Person2();
    			}
    		}
    		return person2; 
    	}
    }
    

      

  • 相关阅读:
    Python深入05 装饰器
    Python深入04 闭包
    Python深入03 对象的属性
    Ubuntu (虚拟机同样) 更换内核?
    .out
    GCC 编译详解
    linux 编译内核 /boot空间不足?
    Java Swing提供的文件选择对话框
    Java Swing 实时刷新JTextArea,以显示不断append的内容?
    为什么要编译Linux内核?
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/Singletonmodel.html
Copyright © 2011-2022 走看看