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

      

  • 相关阅读:
    体验js之美第八课-面向对象创建和继承终结篇
    从零到一:用Phaser.js写意地开发小游戏(Chapter 3
    HTML5 进阶系列:拖放 API 实现拖放排序
    五款轻量型bug管理工具横向测评
    用原生js写一个"多动症"的简历
    HTML5中新增Javascript特性
    Angular2入门系列(五)———— 路由参数设置
    移动端真机调试实战经验
    Java经典习题44
    Java经典习题43
  • 原文地址:https://www.cnblogs.com/japhi/p/14969590.html
Copyright © 2011-2022 走看看