Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Drone Interface
- interface Drone {
- fly(): string;
- }
- // Concrete Drone 1: Simple Plastic Drone
- class SimplePlasticDrone implements Drone {
- fly(): string {
- return 'Flying a simple plastic drone';
- }
- }
- // Concrete Drone 2: Drone With Missiles
- class DroneWithMissiles implements Drone {
- fly(): string {
- return 'Flying a drone with missiles';
- }
- }
- // Concrete Drone 3: Kamikaza Drone
- class KamikazaDrone implements Drone {
- fly(): string {
- return 'Flying a kamikaza drone';
- }
- }
- // Drone Factory
- class DronesFactory {
- createDrone(type: string): Drone {
- switch (type) {
- case 'simple':
- return new SimplePlasticDrone();
- case 'missiles':
- return new DroneWithMissiles();
- case 'kamikaza':
- return new KamikazaDrone();
- default:
- throw new Error('Invalid drone type');
- }
- }
- }
- // Client Code
- const factory = new DronesFactory();
- const simpleDrone = factory.createDrone('simple');
- console.log(simpleDrone.fly()); // Output: 'Flying a simple plastic drone'
- const missileDrone = factory.createDrone('missiles');
- console.log(missileDrone.fly()); // Output: 'Flying a drone with missiles'
- const kamikazaDrone = factory.createDrone('kamikaza');
- console.log(kamikazaDrone.fly()); // Output: 'Flying a kamikaza drone'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement