Java面向对象-单例(Singleton)设计模式

单例模式参考文档:https://www.runoob.com/design-pattern/singleton-pattern.html

单例模式是static的应用场景,指:一个类只能产生一个实例

单例模式的应用场景:工具类一般都是单例模式

引申:什么是实例:https://blog.csdn.net/qq_43663024/article/details/103937611

单例设计模式的实现方式:

创建一个类,满足以下条件:

构造器私有(private);用一个私有(private)、静态(static) 的变量引用实例;提供一个共有 (public)、静态(static) 的方法获得实例

代码:

类的定义:

public class TestSingleton {
    //提供一个私有的、静态的变量引用实例,(引用变量为 私有、静态的)
    private static TestSingleton testSingleton;
    protected int aa =10;
    public String name = "zxc";
    private String tag = "222";

    //构造器私有
    private TestSingleton(){
        System.out.println("私有构造器");
    }

    //提供一个公有、静态方法获得实例
    public static TestSingleton getTestSingleton(){
        if (testSingleton ==null){
            testSingleton = new TestSingleton();
        }
        return testSingleton;
    }
}

实例化:

public class InitialSingletonTest {

    public static void main(String[] args) {
        //    不能通过这种强引用的方法新建实例,因为构造器方法是private的
        //    TestSingleton testSingleton = new TestSingleton();
        TestSingleton t1= TestSingleton.getTestSingleton();
//        一个类只能创建一个实例
        TestSingleton t2= TestSingleton.getTestSingleton();
//        t1 和 t2 其实是一个实例
        System.out.println(t1==t2);
//        name是public的,可以在任何地方访问
        t1.name="dd";
//        aa是protected的,可以在包中访问
        t1.aa= 2;
//        tag是private的,只能在类中访问,否则会报错
//        t1.tag="222";
        System.out.println(t2.aa);

    }

}

 

上一篇:Java Native Interface(JNI)


下一篇:[PHP] 服务容器绑定接口测试