美文网首页
Java单例和static成员变量的区别 singleton v

Java单例和static成员变量的区别 singleton v

作者: StephenLau | 来源:发表于2019-05-27 10:06 被阅读0次
public class StaticField {
    private static StringBuffer cache = new StringBuffer();

    public static void addString(String s){
        cache.append(s).append("/n");
    }

    public static void clear() {
        cache.setLength(0);
    }
}

public class Singleton {
    private static final Singleton ourInstance = new Singleton();

    public static Singleton getInstance() {
        return ourInstance;
    }

    private Singleton() {
    }

    private StringBuffer cache = new StringBuffer();

    public void addString(String s){
        cache.append(s).append("/n");
    }

    public void clear() {
        cache.setLength(0);
    }
}

static field会有以下的问题。

不能继承基类、实现接口。
无法进行依赖注入。不可以通过参数传递到其他方法。我觉得意义,单例根本不需要传递,单例在哪里都可以直接获取。
不能在其他类中进行测试(mock)。

如何选择?

static成员变量是给不需要状态的情况下使用的,通常只放一堆函数,例如Math和其他Utils类。

Singleton更为的灵活,更容易控制它的状态,可以实现接口,继承自其他类并给其他类继承。

https://stackoverflow.com/questions/47325586/singleton-class-vs-static-methods-and-fields
https://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern

相关文章

  • Java单例和static成员变量的区别 singleton v

    static field会有以下的问题。 不能继承基类、实现接口。无法进行依赖注入。不可以通过参数传递到其他方法。...

  • Objective-C单例模式实现方法注解

    单例对象实现方法: 注解: static Singleton *_instance = nil这里使用静态变量是为...

  • 单例模式

    单例1: public class Singleton2 { private static Singleton2...

  • 浅谈 java 单例

    1、单例 饿汉式 为啥是线程安全的? 说明:static 变量 singleTon ,被所有对象共享,在内存中...

  • Spring

    1,Spring 中singleton和prototype的区别 scope=singleton(默认,单例,生成...

  • java学习4/11

    局部变量和成员变量的区别 Java中的static使用 Java中的静态内部类 Java中继承的初始化顺序 Jav...

  • 杂记

    记录一些随手遇到的小知识点 Java 中为什么使用单例和static一致与区别? 一致:单例和static全局唯一...

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

  • Java中static的用法

    在Java中,static可以修饰成员变量、成员方法、代码块和内部类。 1. static修饰成员变量 stati...

  • 设计模式-单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保...

网友评论

      本文标题:Java单例和static成员变量的区别 singleton v

      本文链接:https://www.haomeiwen.com/subject/tkjctctx.html