java练习(16.08.03)支付问题
来源:互联网 发布:java创建动态数组赋值 编辑:程序博客网 时间:2024/06/04 23:30
题目详情
利用面向对象的思想实现一套代码,要求一个APP支持微信支付,支付宝支付,银联支付,以后甚至更多的支付方式。支付通常包含鉴权(authorization)、支付订单生成(generateBill)、最后确认支付(pay)过程。
实现代码
主要思路:设计一个Paymet接口,不同的支付方式分别设计不同的实现类
Payment接口:移动支付的接口
package fgb;//移动支付接口public interface Payment {//登录授权public void authorization();//订单生成public void generateBill();//确认支付public void pay();Account account=new Account("1234", "pass@word");}Account是内部类,这里已经预设了已经绑定好的账号
Payment接口的三个实现类如下
Alipay类:实现支付宝支付的类
package fgb;import java.util.Scanner;//支付宝支付public class Alipay implements Payment{@Overridepublic void authorization() {System.out.println("跳转到支付宝页面并授权登陆");}@Overridepublic void generateBill() {System.out.println("在支付宝页面中生成订单");}@Overridepublic void pay() {System.out.println("请输入密码确认支付宝支付");long startTime=System.currentTimeMillis();Scanner scanner=new Scanner(System.in);String pw=scanner.nextLine();long endTime=System.currentTimeMillis();if(endTime-startTime>60000){System.out.println("支付超时");}else if(Payment.account.config(pw)){System.out.println("支付成功");}else{System.out.println("密码输入错误");}}}
WeChatPay类:微信支付的实现类
package fgb;import java.util.Scanner;//微信支付public class WeChatPay implements Payment{@Overridepublic void authorization() {System.out.println("跳转至微信支付页面并进行授权登陆");}@Overridepublic void generateBill() {System.out.println("在微信页面上生成订单");}@Overridepublic void pay() {System.out.println("请输入密码确认微信支付");long startTime=System.currentTimeMillis();Scanner scanner=new Scanner(System.in);String pw=scanner.next();long endTime=System.currentTimeMillis();if(endTime-startTime>60000){System.out.println("支付超时");}else if(Payment.account.config(pw)){System.out.println("支付成功");}else{System.out.println("密码输入错误");}}}
UnionPay类:银联支付的实现类
package fgb;import java.util.Scanner;//银联支付public class UnionPay implements Payment{@Overridepublic void authorization() {System.out.println("跳转至银联支付页面并授权登陆");}@Overridepublic void generateBill() {System.out.println("在银联支付页面上生成订单");}@Overridepublic void pay() {System.out.println("请输入密码确认银联支付");long startTime=System.currentTimeMillis();Scanner scanner=new Scanner(System.in);String pw=scanner.next();long endTime=System.currentTimeMillis();if(endTime-startTime>60000){System.out.println("支付超时");}else if(Payment.account.config(pw)){System.out.println("支付成功");}else{System.out.println("密码输入错误");}}}
PaymentFactory类:用于创建Payment接口实现类的类
package fgb;import java.util.Scanner;public class PaymentFactory {public static Payment paymentSwitcher(){System.out.println("请选择支付方式");System.out.println("1.微信支付\t2.支付宝支付\t3.银联支付");Scanner scanner=new Scanner(System.in);int flag=scanner.nextInt();switch (flag) {case 1:return (new WeChatPay());case 2:return (new Alipay());case 3:return (new UnionPay());default:System.out.println("貌似不支持这种支付方式呢,请重新选择");return paymentSwitcher();}}}
Account类:支付所用到的银行账号
package fgb;public final class Account {private String username;private String password;public Account(String name, String password) {this.username = name;this.password = password;}<span style="white-space:pre"></span>//验证密码是否输入正确public boolean config(String pw) {if (this.password.equals(pw)) {return true;} else {return false;}}}
最后是测试Test类
package fgb;public class Test {public static void main(String[] args) {Payment payment=PaymentFactory.paymentSwitcher();payment.authorization();payment.generateBill();payment.pay();}}
运行结果如下:请选择支付方式1.微信支付2.支付宝支付3.银联支付2跳转到支付宝页面并授权登陆在支付宝页面中生成订单请输入密码确认支付宝支付pass@word支付成功
说明
若选择给定以外的支付方式则会被要求重新选择
若输入密码的时间超过一分钟则会提示支付超时
0 0
- java练习(16.08.03)支付问题
- java练习(16.08.03)龟兔赛跑问题
- java例程练习(多线程综合练习[生产者-消费者问题])
- java例程练习(多线程[死锁问题])
- java练习--货船问题
- Java服务端支付功能模块--(一)支付宝支付
- Java程序练习-饮食问题
- Java程序练习-数字问题
- JAVA编程练习:兔子问题
- JAVA练习:查找素数问题
- [JAVA练习] Josephu 约瑟夫问题
- Java练习:排列(Permutation)问题
- (支付问题)面向对象
- java练习(16.08.03)cmd命令执行
- java例程练习(有趣的函数重载问题)
- java例程练习(String类对象相等问题)
- java例程练习(多线程[线程同步问题])
- java支付宝支付
- 站在股市的风口,如何买股票(动态规划问题)
- scanf("%c")和getchar
- 文件逆序输出及根据行号索取该行内容
- Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load.
- 数据结构实验之图论六:村村通公路
- java练习(16.08.03)支付问题
- 数据结构实验之串一:KMP简单应用
- 关于A+B+C问题4种语言的解决办法,Java、C语言、C++、Python
- 软件架构师应该知道的 97 件事
- 微软技术支持实习面试
- HDU 2066 一个人的旅行
- 由HDU3689,得KMP算法与一个经典概率问题
- 网易16年研发实习生笔试题 - 寻找第K大
- 去哪儿 5-血型遗传检测