java枚举enum实现多态性

  1. 可以定义一个接口比如支付PayUrlInterface
public inteface payUrlInterface{
		string  getUrl();
}

2.写一个实现类AliPayUrlEnum

public enum AliPayUrlEnum implements PayUrlInterface{

	/**
	 * 支付宝付款码支付
	 */
	ALI_CODE_PAY("/api/pay/alipay/codePay"),

	/**
	 * 支付宝扫码支付
	 */
	ALI_NATIVE_PAY("/api/pay/alipay/nativePay"),

	/**
	 * 支付宝 H5 支付
	 */
	ALI_WAP_PAY("/api/pay/alipay/wapPay"),

	/**
	 * 支付宝 JS 支付
	 */
	ALI_JS_PAY("/api/pay/alipay/jsPay"),

	/**
	 * H5支付
	 */
	ALI_MOBILE_PAY("/api/pay/alipay/mobilePay"),

	/**
	 * 支付宝 APP 支付
	 */
	ALI_APP_PAY("/api/pay/wxpay/appPay"),

	/**
	 * 电脑网站支付
	 */
	ALI_WEB_PAY("/api/pay/alipay/webPay"),

	/**
	 * 关闭订单
	 */
	ALI_CLOSE_ORDER("/api/pay/alipay/closeOrder"),

	/**
	 * 撤销订单
	 */
	ALI_REVERSE_ORDER("/api/pay/alipay/reverseOrder"),

	/**
	 * 支付宝退款
	 */
	ALI_PAY_REFUND_ORDER("/api/pay/alipay/refundOrder"),

	/**
	 * 支付宝查询退款
	 */
	ALI_PAY_REFUND_QUERY("/api/pay/alipay/getRefundResult"),
	;

	/**
	 * 接口 url
	 */
	private final String url;

	AliPayUrlEnum(String url) {
		this.url = url;
	}

	@Override
	public String getUrl() {
		return url;
	}

	@Override
	public String toString() {
		return url;
	}
}

3.还有一个实现类实现payUrlEnum

public enum WxPayUrlEnum implements PayUrlInterface{

	/**
	 * 刷卡支付
	 */
	CODE_PAY("/api/pay/wxpay/codePay"),

	/**
	 * 扫码支付
	 */
	NATIVE_PAY("/api/pay/wxpay/nativePay"),

	/**
	 * 小程序支付
	 */
	MIN_APP_PAY("/api/pay/wxpay/minAppPay"),

	/**
	 * 公众号支付
	 */
	JS_API_PAY("/api/pay/wxpay/jsapi"),

	/**
	 * 收银台支付
	 */
	CASHIER_PAY("/api/pay/wxpay/cashierPay"),

	/**
	 * 刷脸支付
	 */
	FACE_PAY("/api/pay/wxpay/facePay"),

	/**
	 * 刷脸支付凭证
	 */
	GET_FACE_PAY_AUTH_INFO("/api/pay/wxpay/getFacePayAuthInfo"),

	/**
	 * H5 支付
	 */
	WAP_PAY("/api/pay/wxpay/wapPay"),

	/**
	 * APP 支付
	 */
	APP_PAY("/api/pay/wxpay/appPay"),

	/**
	 * QQ小程序支付
	 */
	QQ_PAY("/api/pay/wxpay/qqPay"),

	/**
	 * 退款
	 */
	REFUND_ORDER("/api/pay/wxpay/refundOrder"),

	/**
	 * 查询退款
	 */
	REFUND_QUERY("/api/pay/wxpay/getRefundResult"),

	/**
	 * 查询投诉
	 */
	GET_COMPLAINT("/api/pay/wxpay/getComplaint"),

	/**
	 * 关闭订单
	 */
	CLOSE_ORDER("/api/pay/wxpay/closeOrder"),

	/**
	 * 撤销订单
	 */
	REVERSE_ORDER("/api/pay/wxpay/reverseOrder"),

	/**
	 * 查询微信结算信息
	 */
	WX_BILL_INFO("/api/pay/wxpay/getWxBillInfo"),

	/**
	 * 下载对账单
	 */
	DOWNLOAD_BILL("/api/pay/wxpay/downloadBill"),

	/**
	 * 查询刷卡支付结果
	 */
	GET_CODE_PAY_RESULT("/api/pay/wxpay/getCodePayResult"),

	/**
	 * 获取微信授权链接
	 */
	GET_OAUTH_URL("/api/wxlogin/getOauthUrl"),

	/**
	 * 查询微信授权信息
	 */
	GET_BASE_OAUTH_INFO("/api/wxlogin/getBaseOauthInfo"),

	/**
	 * 查询订单
	 */
	GET_ORDER_INFO("/api/system/order/getPayOrderInfo"),

	/**
	 * 微信扫码登录
	 */
	GET_WEB_LOGIN("/api/wx/getWebLogin"),

	/**
	 * 查询授权信息
	 */
	GET_OAUTH_INFO("/api/wx/getOauthInfo"),

	/**
	 * 一码付
	 */
	MERGE_NATIVE_PAY("/api/pay/merge/nativePay"),
	;

	/**
	 * 接口 url
	 */
	private final String url;

	WxPayUrlEnum(String url) {
		this.url = url;
	}

	@Override
	public String getUrl() {
		return url;
	}

	@Override
	public String toString() {
		return url;
	}
}

3.使用的时候可以直接传入接口PayUrlInterface

public class PayApi {
	public static String getReqUrl(String serverUrl, PayUrl payUrl) {
		return serverUrl.concat(payUrl.getUrl());
	}
}

4.调用的时候直接传入对应实现类的枚举项,可以获取固定的URL

public class test{
		public static void main(main[] args) {
				payApi.getReqUrl("", AliPayUrlEnum.MERGE_NATIVE_PAY);
		}
}

5.到此顺利完成代码规范,做到代码不容易,扩展只需要增加对应的enum(枚举类)即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值