设计模式---外观模式
package Facade;
import java.sql.SQLException;
public interface F {
void f() throws SQLException;
}
package Facade;
import Iterator.Aggregate;
import Iterator.ConcreteAggregate;
import Iterator.MyIterator;
import entity.Table;
import factory.DoSelect;
import factory.DoUpdate;
import singleton.ScannerSingle;
import java.sql.ResultSet;
import java.sql.SQLException;
public class F1 implements F{
//集合遍历的时候,迭代器模式
@Override
public void f() throws SQLException {
Aggregate aggregate = new ConcreteAggregate<>();
System.out.println("---目前空闲的餐桌号有:");
ResultSet resultSet = (ResultSet) new DoSelect().doFactory("SELECT `id`, `people`, `status` FROM `table` WHERE 1;");
while (resultSet.next()) {
int id = resultSet.getInt("id");
int people = resultSet.getInt("people");
String status = resultSet.getString("status");
if (status.equals("null")) {
System.out.println(id + " 号桌是空的,可以容纳 " + people + " 人");
aggregate.add(new Table(id, people, status));
}
}
System.out.println("======请输入您想预定的餐桌号:");
int x = ScannerSingle.getScanner().nextInt();
boolean check = false;
//拿到容器迭代器,使用迭代器遍历
MyIterator iterator = aggregate.iterator();
while (iterator.hasNext()) {
if (iterator.next().getId() == x) {
check = true;
break;
}
}
if (check) {
Object o = new DoUpdate().doFactory("UPDATE `table` SET `status`= '有人' WHERE `id` = " + x);
if(o==null) {
System.out.println("预定失败");
}else{
System.out.println("预定餐桌成功");
}
} else {
System.out.println("需输入正确的空闲餐桌号,请重新操作");
}
}
}
package Facade;
import Iterator.Aggregate;
import Iterator.ConcreteAggregate;
import Iterator.MyIterator;
import entity.Menu;
import entity.Table;
import factory.DoSelect;
import factory.DoUpdate;
import singleton.ScannerSingle;
import java.sql.ResultSet;
import java.sql.SQLException;
public class F2 implements F {
@Override
public void f() throws SQLException {
Aggregate
package Facade;
import entity.Invoicing;
import entity.Menu;
import factory.DoSelect;
import factory.DoUpdate;
import singleton.ScannerSingle;
import java.sql.ResultSet;
import java.sql.SQLException;
public class F3 implements F {
@Override
public void f() throws SQLException {
System.out.println("######请输入您的餐桌号:");
int x = ScannerSingle.getScanner().nextInt();
Invoicing invoicing = null;
ResultSet resultSet = (ResultSet) new DoSelect().doFactory("SELECT `id`, `table_id`, `money`, `status` FROM `invoicing` WHERE `table_id`=" + x);
while (resultSet.next()) {
int id = resultSet.getInt("id");
int table_id = resultSet.getInt("table_id");
double money = resultSet.getDouble("money");
String status = resultSet.getString("status");
invoicing = new Invoicing(id, table_id, money, status);
}
if (invoicing.getStatus().equals("已结账")) {
System.out.println("您已结账,请勿重新结账");
} else {
new DoUpdate().doFactory("UPDATE `invoicing` SET `status`= '已结账' WHERE `table_id`=" + x);
System.out.println("###您共计消费 " + invoicing.getMoney() + " 元,已成功结账");
}
}
}
package Facade;
import Iterator.Aggregate;
import Iterator.ConcreteAggregate;
import Iterator.MyIterator;
import entity.Invoicing;
import entity.Order;
import factory.DoSelect;
import singleton.ScannerSingle;
import java.sql.ResultSet;
import java.sql.SQLException;
public class F4 implements F {
@Override
public void f() throws SQLException {
Aggregate aggregate = new ConcreteAggregate<>();
System.out.println("######请输入您的餐桌号:");
int x = ScannerSingle.getScanner().nextInt();
Invoicing invoicing = null;
ResultSet resultSet = (ResultSet) new DoSelect().doFactory("SELECT order.id as id, `table_id`, `menu_id`, `status`,`name` FROM `order`,`menu` WHERE `table_id`=" + x + " and order.menu_id=menu.id");
while (resultSet.next()) {
int id = resultSet.getInt("id");
int table_id = resultSet.getInt("table_id");
int menu_id = resultSet.getInt("menu_id");
String status = resultSet.getString("status");
String name = resultSet.getString("name");
aggregate.add(new Order(id,table_id,menu_id,status,name));
}
MyIterator iterator = aggregate.iterator();
System.out.println("####信息如下:");
while (iterator.hasNext()) {
Order order = iterator.next();
System.out.println("餐桌号:" + order.getTable_id() + " 菜名:" + order.getName() + " " + order.getStatus());
}
System.out.println();
}
}
package com;
import Facade.F1;
import Facade.F2;
import Facade.F3;
import Facade.F4;
import singleton.ScannerSingle;
import java.sql.SQLException;
/**
* 外观模式
*/
public class Menu {
public void menu() throws SQLException {
System.out.println("*************************************************");
System.out.println("* 餐厅点餐系统 *");
System.out.println("*************************************************");
System.out.println("******* 1.预定餐桌 ********");
System.out.println("******* 2.点菜 ********");
System.out.println("******* 3.结账 ********");
System.out.println("******* 4.查看订单 ********");
System.out.println("******* 0.退出 ********");
System.out.println("*************************************************");
System.out.println("----请按数字选择:");
int x = ScannerSingle.getScanner().nextInt();
switch (x){
case 1:
new F1().f();menu();break;
case 2:
new F2().f();menu();break;
case 3:
new F3().f();menu();break;
case 4:
new F4().f();menu();break;
}
}
}
package com;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws SQLException {
new Menu().menu();
}
}
外观:F
子系统:F1 F2 F3 F4
客户:Menu
相关