class的访问权限+单例模式

来源:互联网 发布:苍穹软件安装教程 编辑:程序博客网 时间:2024/05/23 17:38

class只有两种访问权限(内部类除外):package access和public。如果不想其他任何人对该类拥有访问权限,可以把所有构造方法指定为private,阻止其创建该类的对象。但有一个例外,就是可以在该类的static成员内部创建对象。

class Soup1{  private Soup1() {}  public static Soup1 makeSoup(){    return new Soup1();  }}class Soup2{private Soup2(){}//Singleton patternprivate static Soup2 ps1=new Soup2();public static Soup2 access(){return ps1;}public void f(){}}public class Lunch {void testPrivate(){//cant't do this// ! Soup1 soup=new Soup1();}void testStatic(){Soup1 soup=Soup1.makeSoup();}void testSinleton(){Soup2.access().f();}}

 Soup1和Soup2两个类通过把构造方法设置为private来阻止直接创建类的实例。那么如何使用这些类呢。本例给出

了两种方式。

在Soup1中,创建了一个static方法,它创建了一个新的Soup1对象并返回一个对它的引用。Soup2用到了单例模式,始终只能创建它的一个对象;Soup2类的对象是作为Soup2的一个static private成员而创建的,所以有且只有一个(单例),除非是通过public方法access(),否则是无法访问到它的。

原创粉丝点击