Import java.util.ArrayList; import java.util.List; interface PaymentMethod { public (1) ; } /* Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格 */ abstract class Card(2) { private final String name, num; public Card( String name, String num ) { this.name = name; this.num = num; } @Oveiride public String toString() { return(String.format( “ % s card[name = % s, num = % s] ” this.getType(), name, num ) ); } @Override public void pay( int cents ) { System.out.println (“ Payed " + cents + “ cents using “ + toString()); this.executeTransaction(cents); } protected abstract String getType(); protected abstract void executeTransaction(int cents); } class CreditCard (3) { public CreditCard(String name, String num) { (4) ; } @Override protected String getType() { return "CREDIT "; } @Override protected void executeTransaction(int cents) { System.out.println(cents + " paid using Credit Card."’); } } class Bill {//包含所有购买商品的账单 private List items = new ArrayList<>(); public void add(Item item) { items.add(item); } public intgetTotalPrice(){/*计算所有 item 的总价格,代码略*/ } public void pay(PaymentMethod paymentMethod){//用指定的支付方式完成支付 (5) (getTotalPrice()); } } public class PaymentSystem { public void pay() { Bill bill = new Bill(); Item item1 = new Item(" 1234 ",10); Item item2 = new Item( " 5678 ",40); bill.add(item1); bill.add(item2); //将物品添加到账单中 bill.pay(new CreditCard("LI SI ", " 98765432101 ")); //信用卡支付 } public static void main(String[ ] args) { (6) = new PaymentSystem(); payment.pay(); } }