OneCompiler

Resturant

57

// Subsystem 1
class Kitchen {
public void prepareFood() {
System.out.println("Kitchen: Preparing food...");
}
}

// Subsystem 2
class Waiter {
public void takeOrder() {
System.out.println("Waiter: Taking the order...");
}
}

// Subsystem 3
class Billing {
public void generateBill() {
System.out.println("Billing: Generating the bill...");
}
}

// Facade Class
class RestaurantFacade {
private Kitchen kitchen;
private Waiter waiter;
private Billing billing;

public RestaurantFacade() {
    kitchen = new Kitchen();
    waiter = new Waiter();
    billing = new Billing();
}

public void placeOrder() {
    System.out.println("Customer arrives to place an order.");
    waiter.takeOrder();
    kitchen.prepareFood();
    billing.generateBill();
    System.out.println("Order completed.\n");
}

}

// Main class at the end
public class Practical7 {
public static void main(String[] args) {
RestaurantFacade restaurant = new RestaurantFacade();
restaurant.placeOrder();
}
}