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;
    	}
    
    }
    

      

  • 相关阅读:
    css 选择器
    用 jupyter notebook 打开 oui.txt 文件出现的问题及解决方案
    jupyter notebook 中用 matplot 画图不显示图像
    dropna(thresh=n) 的用法
    pandas 对象中 to_pickle 方法参数命名问题,不能用frame
    Index.get_indexer 方法的含义
    7)微分
    5)函数极限与连续函数
    3)数据科学的数学之序列与极限--阶乘/指数增长比较
    2)数据科学的数学之序列与极限
  • 原文地址:https://www.cnblogs.com/japhi/p/14969590.html
Copyright © 2011-2022 走看看