Considere a seguinte classe, que representa uma ligação a uma base de dados e é responsável por enviar as interrogações feitas por clientes desta classe a um sistema relacional de bases de dados e por devolver o resultado das interrogações:


public class DatabaseConnection {
  // ...
  // creates a connection to a relational dataabse system
  public DatabaseConnection() {
    // code for initializing state of this object
// and establishing a connection with the database server
  }
  public ResultSet executeQuery(String sqlQuery) {
    // executes the query and returns the answer
  }
}


Neste exemplo de código, sempre que que criar um novo objecto desta classe vai-se criar uma ligação ao servidor de base de dados. Se forem criadas várias instâncias na mesma aplicação, vão ser criadas múltiplas (idênticas) ligações à base de dados. 

Qual o padrão de desenho a utilizar para garantir que apenas se tem no máximo uma única instância de DatabaseConnection?

Altere o código desta classe aplicando o padrão escolhido.