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 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 e que esta instância apenas é criada quando realmente for necessária.?
Altere o código desta classe aplicando o padrão escolhido.