Skip to content

Commit f2b4d88

Browse files
完善接口方法
1 parent 8013f06 commit f2b4d88

8 files changed

+68
-28
lines changed

src/main/java/demo/invoice/Invoice.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class Invoice {
2121
private BigDecimal totalAmount;
2222

2323
/**
24-
* 火车票的专属字段
24+
* 火车票的专属字段,是放在主类里面,还是单独拆分一个新的类好?
2525
*/
2626
private String trainNum;
2727
private String passengerName;
@@ -31,4 +31,5 @@ public class Invoice {
3131
private String electronicTicketNum;
3232
private String customerIdentityNum;
3333

34+
3435
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package demo.invoice;
2+
3+
public class InvoiceConstant {
4+
5+
public static final int INVOICE_TRAIN=8;
6+
7+
public static final int INVOICE_AIR=9;
8+
9+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package demo.invoice;
2+
3+
public class InvoiceOperation {
4+
5+
/**
6+
* 计算发票类型。
7+
* 根据发票代码、发票号码计算得到发票类型。
8+
* @param invoiceNo
9+
* @param invoiceCode
10+
* @return
11+
*/
12+
public static int calculateInvoiceType(String invoiceNo,String invoiceCode){
13+
int invoiceType=(int)(Math.random()*2+8);
14+
System.out.println("发票类型为:"+invoiceType);
15+
return invoiceType;
16+
}
17+
18+
/**
19+
* 根据不同的发票类型生成不同的发票服务
20+
* @param invoice
21+
*/
22+
public static void updateInvoice(Invoice invoice){
23+
String invoiceNo=invoice.getInvoiceNo();
24+
String invoiceCode=invoice.getInvoiceCode();
25+
int invoiceType=calculateInvoiceType(invoiceNo,invoiceCode);
26+
InvoiceService invoiceService;
27+
if(invoiceType==InvoiceConstant.INVOICE_TRAIN) {
28+
invoiceService=new InvoiceServiceAir();
29+
}else if(invoiceType==InvoiceConstant.INVOICE_AIR){
30+
invoiceService=new InvoiceServiceTrain();
31+
}else {
32+
invoiceService=new InvoiceServiceOther();
33+
}
34+
invoiceService.updateInvoice();
35+
}
36+
37+
}

src/main/java/demo/invoice/InvoicePatternTest.java

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,10 @@
55
*/
66
public class InvoicePatternTest {
77
public static void main(String[] args) {
8-
int invoiceType=9;
9-
updateInvoice(invoiceType);
10-
11-
}
12-
13-
public static void updateInvoice(int invoiceType){
14-
Invoice invoice=new Invoice();
15-
//根据不同的发票类型生成不同的发票服务
16-
InvoiceService invoiceService=null;
17-
if(invoiceType==8) {
18-
invoiceService=new InvoiceServiceAir();
19-
}else if(invoiceType==9){
20-
invoiceService=new InvoiceServiceTrain();
21-
}else {
22-
invoiceService=new InvoiceServiceOther();
23-
}
24-
invoiceService.updateInvoice();
25-
8+
String invoiceNo="invoiceNo";
9+
String invoiceCode="invoiceCode";
10+
Invoice invoice=Invoice.builder().invoiceCode(invoiceCode).invoiceNo(invoiceNo).build();
11+
InvoiceOperation.updateInvoice(invoice);
2612
}
2713

2814
}

src/main/java/demo/invoice/InvoiceService.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package demo.invoice;
22

3-
public interface InvoiceService {
43

5-
Invoice queryInvoice(String invoiceNo,String invoiceCode);
4+
/**
5+
* 变化的部分,使用接口实现。相同的部分,使用继承复用。
6+
*/
7+
public interface InvoiceService {
8+
Invoice queryInvoice(Invoice invoice);
69

710
int saveInvoice();
811

src/main/java/demo/invoice/InvoiceServiceAir.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package demo.invoice;
22

3-
public class InvoiceServiceAir implements InvoiceService{
4-
3+
public class InvoiceServiceAir extends InvoiceOperation implements InvoiceService {
54

5+
/**
6+
* 此处的参数类型,应该是Invoice还是InvoiceAir?
7+
* @param invoice
8+
* @return
9+
*/
610
@Override
7-
public Invoice queryInvoice(String invoiceNo, String invoiceCode) {
11+
public Invoice queryInvoice(Invoice invoice) {
812
System.out.println("查询飞机票");
913
return null;
1014
}

src/main/java/demo/invoice/InvoiceServiceOther.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package demo.invoice;
22

3-
public class InvoiceServiceOther implements InvoiceService {
3+
public class InvoiceServiceOther extends InvoiceOperation implements InvoiceService {
44
@Override
5-
public Invoice queryInvoice(String invoiceNo, String invoiceCode) {
5+
public Invoice queryInvoice(Invoice invoice) {
66
System.out.println("查询其他发票");
77
return null;
88
}

src/main/java/demo/invoice/InvoiceServiceTrain.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package demo.invoice;
22

3-
public class InvoiceServiceTrain implements InvoiceService {
3+
public class InvoiceServiceTrain extends InvoiceOperation implements InvoiceService {
44
@Override
5-
public Invoice queryInvoice(String invoiceNo, String invoiceCode) {
5+
public Invoice queryInvoice(Invoice invoice) {
66
System.out.println("查询火车票");
77
return null;
88
}

0 commit comments

Comments
 (0)