Skip to content

Instantly share code, notes, and snippets.

@Akash52
Last active April 1, 2024 05:52
Show Gist options
  • Save Akash52/ad4679167a7b2a03ce262e183a2723a7 to your computer and use it in GitHub Desktop.
Save Akash52/ad4679167a7b2a03ce262e183a2723a7 to your computer and use it in GitHub Desktop.
// Abstract class representing a User
abstract class User {
// Abstract methods to be implemented by subclasses
abstract login(): void;
abstract logout(): void;
}
// Concrete subclass representing an AdminUser
class AdminUser extends User {
login(): void {
console.log("Admin user logged in.");
}
logout(): void {
console.log("Admin user logged out.");
}
}
// Concrete subclass representing a RegularUser
class RegularUser extends User {
login(): void {
console.log("Regular user logged in.");
}
logout(): void {
console.log("Regular user logged out.");
}
}
// Concrete subclass representing a GuestUser
class GuestUser extends User {
login(): void {
console.log("Guest user logged in.");
}
logout(): void {
console.log("Guest user logged out.");
}
}
// Function to manage session for an array of users
function manageSession(users: User[]): void {
users.forEach(user => {
user.login(); // Calling login method for each user
// Additional session management logic can be added here...
user.logout(); // Calling logout method for each user
});
}
// Creating instances of AdminUser, RegularUser, and GuestUser
const admin = new AdminUser();
const regular = new RegularUser();
const guest = new GuestUser();
// Creating an array of users
const users: User[] = [admin, regular, guest];
// Managing session for the array of users
manageSession(users);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment