zoukankan      html  css  js  c++  java
  • Java知识点-----------单例设计模式

    单例设计模式(Singleton),就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的

    举例 : 有1个类Customer , 要求该类只能有1个对象

    思路 : 1. 构造器静态私有化( 外部无法访问 , 无法在类外部创造对象 ) 

         2. 在Customer内部创建1个对象 , 修饰符为private static

         3. 创建1个公共的静态方法 , 用于返回该对象

    1 . 饿汉模式

    package com.woniuxy.pratice1;
    
    //饿汉式   先创建单例对象
    public class Bank {
    	private String name;
    	//私有化构造方法,类外部无法创造对象
    	private Bank(String name) {
    		this.name = name;
    	}
    	//在类李创造一个私有化静态的对象bank(同时也是该类唯一的一个对象)
    	private static Bank bank = new Bank("中国银行");
    	//提供公共的静态方法,返回唯一的对象
    	public static Bank getBank() {
    		return bank;
    	}
    	
    	public void deposit() {
    		System.out.println("在"+this.name+"存钱");
    	}
    }
    

    2. 懒汉模式

    package com.woniuxy.pratice1;
    //懒汉式
    public class Home {
    	//私有化构造器,类外部无法创建对象
    	private  Home() {
    		
    	}
    	//先声明1个私有的静态对象h,外部无法访问
    	private static Home h;
    	//提供公共的静态方法获取唯一对象h
    	public static Home getHome() {
    		//如果第一次调用本方法,h为空则创建对象并赋值给h
    		if (h == null) {
    			h = new Home();
    		}
    		return h;
    	}
    
    }
    

      

  • 相关阅读:
    禁止网页后退
    C# 数组排序
    SQL求往年的工资和
    手机的隐秘功能
    C#中的String类
    C#修饰符
    Application,Session,Cookie,ViewState和Cache区别
    css margin和padding的区别
    php常见的js正则表达式
    js 正则表达式基础篇
  • 原文地址:https://www.cnblogs.com/japhi/p/14969590.html
Copyright © 2011-2022 走看看