Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Thinking:类访问笔记

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

以下是TIJ中的代码:

class Soup {
  private Soup() {}
  // (1) Allow creation via static method:
  public static Soup makeSoup() {
    return new Soup();
  }
  // (2) Create a static object and
  // return a reference upon request.
  // (The "Singleton" pattern):
  private static Soup ps1 = new Soup();
  public static Soup access() {
    return ps1;
  }

  public void f() {}
}

class Sandwich { // Uses Lunch
  void f() { new Lunch(); }
}
// Only one public class allowed per file:
public class Lunch {
  void test() {
    // Can't do this! Private constructor:
    //! Soup priv1 = new Soup();
    Soup priv2 = Soup.makeSoup();
    Sandwich f1 = new Sandwich();
    Soup.access().f();
  }
}

------------                                                                                                                                                           返回值是Soup的对象引用。这里这个类是一个自引用的类,JDK中util包中如LinkedList之类就是这样实现的。access是一个静态方法,所以应该用类名直接调用。
而且,access()返回一个Soup对象,所以可以访问类方法f.

不能Soup priv1 = new Soup();
因为构造函数是私有方法
通过public static Soup access() {
    return ps1;
  }
实际上等于调用了一次构造函数
 Soup.access()返回的是Soup的一个对象,f()是Soup的一个非私有方法,用Soup的一个对象调用它在正常不过了
所以:Soup.access().f();





相关文章

相关软件