Last active
April 1, 2024 05:52
-
-
Save Akash52/ad4679167a7b2a03ce262e183a2723a7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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