zoukankan      html  css  js  c++  java
  • Java设计模式:(二)单例模式

    Java设计模式:单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。

    意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    主要解决: 一个全局使用的类频繁地创建与销毁。

    单例模式实现步骤:

    1.一个类只有一个实例

    如果要做到只有一个实例那么该的的构造方法不能是public的,是private的。因为该类的构造方法如果是public的,那就就可以通过new SingleObject() 的方式来生成实例,不能保证只有一个实例

    2.生成实例

    构造方法是private的,那么只有该类能够访问SingleObject类的构造方法,那么只能在SingleObject中自己调用构造方法生成实例

     private SingleObject instance = new SingleObject();

    3.全局只有一个访问点

    如上面的语句已经生成了实例instance,但是该实例,还是private的,只有SingleObject类的成员能够访问,这样是不符合的,那么为它新增一个方法来返回该实例getInstance()。还有一点不符合:每调用一次方法就会放回一个实例,这样是不符合的,那么为该方法新增一个static关键字,让他只能生成一个对象。

       public static SingleObject getInstance(){
          return instance;
       }

    4.静态方法只能访问静态成员变量

    于是为成员变量新增static关键字

    private static SingleObject instance = new SingleObject();
    下面是单例模式的代码
    public class SingleObject {
    
       //静态方法只能访问静态成员变量
       private static SingleObject instance = new SingleObject();
    
       //构造方法为什么是私有的,因为如果是public那么,每new一个对象就会有一个对象生成,不符合单例模式。所以不可以使用SingleObject instance = new SingleObject();  
    
       private SingleObject(){}
    
       //那么就思考使用类.方法名的方式调用方法,在静态方法中生成对象。不能每调用一次方法就生成一个对象,那么就在类中生成一个对象,把它返回给对象。
       public static SingleObject getInstance(){
          return instance;
       }
    
       public void showMessage(){
          System.out.println("Hello World!");
       }
    }
  • 相关阅读:
    使用parted 对大容量盘进行分区
    CENTOS7 修改网卡名称为eth[012...],格式
    docker报错
    docker 存储定义成direct-lvm 模式
    Docker存储方式选型建议
    centos install docker setup centos7 安装docker
    docker centos yum 源
    zip 解压脚本
    IaaS,PaaS,Saas 云服务的介绍
    Codeforces Round #589 (Div. 2) D. Complete Tripartite(模拟)
  • 原文地址:https://www.cnblogs.com/eathertan/p/12532179.html
Copyright © 2011-2022 走看看