Example #1: Database Connection
Let’s take the example of creating a class for database connection. Take a look at the class diagram.
class DbConnSingleton {
private static singletonInstance: DbConnSingleton;
private host: string;
private port: number;
private username: string;
private password: string;
private constructor(host: string, port: number, username: string, password: string) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
public static getInstance(host: string, port: number, username: string, password: string): DbConnSingleton {
if (this.singletonInstance) {
console.log('Using existing db connection instance');
return this.singletonInstance;
}
console.log('Creating new db connection instance');
this.singletonInstance = new DbConnSingleton(host, port, username, password);
return this.singletonInstance;
}
public printConnectionDetails() {
console.log("host:" + this.host);
console.log("port:" + this.port);
console.log("username:" + this.username);
console.log("password:" + this.password);
}
public executeQuery(query: string) {
console.log("Executing query: " + query);
}
}
const dbConnOne = DbConnSingleton.getInstance('loclahost', 1234, 'root', 'secret!pass');
console.log("DB connection details for dbConnOne:");
dbConnOne.printConnectionDetails();
const dbConnTwo = DbConnSingleton.getInstance('192.168.55.55', 2222, 'root2', 'secret!pass2');
console.log("DB connection details for dbConnTwo:");
dbConnTwo.printConnectionDetails();
Output
Creating new db connection instance
DB connection details for dbConnOne:
host:loclahost
port:1234
username:root
password:secret!pass
Using existing db connection instance
DB connection details for dbConnTwo:
host:loclahost
port:1234
username:root
password:secret!pass