第2题 :需求:可以按任何支付方式(包括以后并把出现的支持方式)进行一定数额的支付。 对任何的支持方式,可进行正确的支付。如:现金支付、信用卡支付、代金券支付、微信方式支付、支付宝方式支付、……。 运用Java面向对象的知识,遵守“开-闭原则”,针对这一个软件的需求,设计一个Java的软件代码结构。 设计出你的代码结构。
时间: 2024-02-15 08:05:27 浏览: 87
java版支付sdk 支付方式包括支付宝、微信 功能包括支付、退款
5星 · 资源好评率100%
根据需求,我们可以设计以下的代码结构:
1. PaymentMethod接口,定义了支付方式的规范,包括支付方法和获取支付方式名称的方法。
```java
public interface PaymentMethod {
void pay(double amount);
String getName();
}
```
2. CashPayment类,实现了PaymentMethod接口,用于现金支付。
```java
public class CashPayment implements PaymentMethod {
@Override
public void pay(double amount) {
System.out.println("已支付 " + amount + " 元现金");
}
@Override
public String getName() {
return "现金支付";
}
}
```
3. CreditCardPayment类,实现了PaymentMethod接口,用于信用卡支付。
```java
public class CreditCardPayment implements PaymentMethod {
@Override
public void pay(double amount) {
System.out.println("已支付 " + amount + " 元信用卡");
}
@Override
public String getName() {
return "信用卡支付";
}
}
```
4. VoucherPayment类,实现了PaymentMethod接口,用于代金券支付。
```java
public class VoucherPayment implements PaymentMethod {
@Override
public void pay(double amount) {
System.out.println("已支付 " + amount + " 元代金券");
}
@Override
public String getName() {
return "代金券支付";
}
}
```
5. WeChatPayment类,实现了PaymentMethod接口,用于微信支付。
```java
public class WeChatPayment implements PaymentMethod {
@Override
public void pay(double amount) {
System.out.println("已支付 " + amount + " 元微信");
}
@Override
public String getName() {
return "微信支付";
}
}
```
6. AlipayPayment类,实现了PaymentMethod接口,用于支付宝支付。
```java
public class AlipayPayment implements PaymentMethod {
@Override
public void pay(double amount) {
System.out.println("已支付 " + amount + " 元支付宝");
}
@Override
public String getName() {
return "支付宝支付";
}
}
```
7. Payment类,包含一个支付方法,接收支付方式和支付金额作为参数,并调用支付方式的支付方法。
```java
public class Payment {
public void makePayment(PaymentMethod paymentMethod, double amount) {
paymentMethod.pay(amount);
}
}
```
通过上述代码结构,我们可以方便地扩展新的支付方式,同时保证对现有代码的修改尽可能小,符合开-闭原则。
阅读全文