种设计模式网上订餐系统的代码Java
时间: 2023-07-25 17:05:27 浏览: 46
以下是一个简单的基于MVC设计模式的Java代码示例,用于网上订餐系统:
1. Model层 - Order.java
```
public class Order {
private int orderId;
private String customerName;
private ArrayList<MenuItem> items;
private double total;
public Order(int orderId, String customerName) {
this.orderId = orderId;
this.customerName = customerName;
items = new ArrayList<>();
total = 0.0;
}
public int getOrderId() {
return orderId;
}
public String getCustomerName() {
return customerName;
}
public ArrayList<MenuItem> getItems() {
return items;
}
public double getTotal() {
return total;
}
public void addItem(MenuItem item) {
items.add(item);
total += item.getPrice();
}
}
```
2. Model层 - MenuItem.java
```
public class MenuItem {
private String name;
private double price;
public MenuItem(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
```
3. View层 - OrderView.java
```
import java.util.ArrayList;
import java.util.Scanner;
public class OrderView {
private Scanner scanner;
public OrderView() {
scanner = new Scanner(System.in);
}
public void displayMenu(ArrayList<MenuItem> menu) {
System.out.println("Menu:");
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.get(i);
System.out.println(i + ". " + item.getName() + " - $" + item.getPrice());
}
}
public int getMenuItemChoice() {
System.out.print("Enter menu item number: ");
return scanner.nextInt();
}
public String getCustomerName() {
System.out.print("Enter customer name: ");
scanner.nextLine();
return scanner.nextLine();
}
public void displayOrder(Order order) {
System.out.println("Order #" + order.getOrderId() + " for " + order.getCustomerName());
System.out.println("Items:");
for (MenuItem item : order.getItems()) {
System.out.println("- " + item.getName() + " ($" + item.getPrice() + ")");
}
System.out.println("Total: $" + order.getTotal());
}
}
```
4. Controller层 - OrderController.java
```
import java.util.ArrayList;
public class OrderController {
private ArrayList<MenuItem> menu;
private ArrayList<Order> orders;
private OrderView view;
public OrderController() {
menu = new ArrayList<>();
orders = new ArrayList<>();
view = new OrderView();
setupMenu();
}
private void setupMenu() {
menu.add(new MenuItem("Hamburger", 5.99));
menu.add(new MenuItem("Cheeseburger", 6.99));
menu.add(new MenuItem("Hot Dog", 3.99));
menu.add(new MenuItem("French Fries", 2.99));
}
public void start() {
String customerName = view.getCustomerName();
Order order = new Order(orders.size() + 1, customerName);
int choice;
do {
view.displayMenu(menu);
choice = view.getMenuItemChoice();
if (choice >= 0 && choice < menu.size()) {
MenuItem item = menu.get(choice);
order.addItem(item);
}
} while (choice >= 0 && choice < menu.size());
orders.add(order);
view.displayOrder(order);
}
}
```
5. Main函数 - Main.java
```
public class Main {
public static void main(String[] args) {
OrderController controller = new OrderController();
controller.start();
}
}
```
这个示例实现了基本的网上订餐系统,用户可以输入自己的名字并选择菜单中的项目,系统会生成一个订单并显示总价。这个系统可以通过添加更多的菜品和功能来进行扩展。