<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Singleton在Java中的應用

      [摘要]了解本文的例子  編者按:程序中經常有這樣的要求,整個程序運行時只有一個實例被使用。比如:數據庫連接池,系統參數配置,Java API 中的 Runtime, Calendar ...如何實現這種需求成為一個值得討論的問題。讓我們來看看本文的例子!    A.常見的例子  以往的做法,是在程序的...

        了解本文的例子

        編者按:程序中經常有這樣的要求,整個程序運行時只有一個實例被使用。比如:數據庫連接池,系統參數配置,Java API 中的 Runtime, Calendar ...如何實現這種需求成為一個值得討論的問題。讓我們來看看本文的例子。

         

        A.常見的例子

        以往的做法,是在程序的某個類里面(比如是 GlobalObject )建立一個這個此種類的實例,然后規定所有需要用到此類的,都從 GlobalObject 那里獲得,看下面的例子:

      public class ConnectionPoolManager {
      public ConnectionPoolManager {
      // do some initialize work
      }
      public Connection getConnection(){
      ....
      }
      }

      public class GlobalObject {
      private ConnectionPoolManager connectionPoolManager;
      public GlobalObject () {
      connectionPoolManager = new ConnectionPoolManager();
      ...
      }
      public void getConnectionPoolManager() {
      return connectionPoolManager;
      }
      }

      public class QueryFunctions {
      public static Collection findStudentByName(String name){
      ConnectionPoolManager = globalObject.getConnectionPoolManager();
      Connection connection = connectionPoolManager.getConnection();
      // query database
      }
      }

        但這樣做有如下缺點:

        其他人可能 調用 ConnectionPoolManager 的構造函數自己建立一個 數據庫連接池,導致程序中存在多個 ConnectionPoolManager,人為的規定往往得不到好的實施。

        GlobalObject 其實就是一個 C 語言中的全局變量,與面向對象的方法相沖突。




      日韩精品一区二区三区高清