一、创建一个接口
package strategy.pay;
public interface Payment {
PayStatus pay(String uid, double amount);
}
二、实现接口
package strategy.pay.channel;
import strategy.pay.PayStatus;
import strategy.pay.Payment;
public class ALIPay implements Payment {
@Override
public PayStatus pay(String uid, double amount) {
return new PayStatus("200", "ALIPay成功", null);
}
}
package strategy.pay.channel;
import strategy.pay.PayStatus;
import strategy.pay.Payment;
public class JDPay implements Payment {
@Override
public PayStatus pay(String uid, double amount) {
return new PayStatus("200", "JDPay成功", null);
}
}
package strategy.pay.channel;
import strategy.pay.PayStatus;
import strategy.pay.Payment;
public class WeChatPay implements Payment {
@Override
public PayStatus pay(String uid, double amount) {
return new PayStatus("200", "WeChatPay成功", null);
}
}
三、测试
package strategy.pay;
import strategy.pay.channel.ALIPay;
import strategy.pay.channel.JDPay;
import strategy.pay.channel.WeChatPay;
import java.util.UUID;
public class PayTest {
public static void main(String[] args) {
ALIPay aliPay = new ALIPay();
System.out.println(aliPay.pay(UUID.randomUUID().toString(), 13.14));
JDPay jdPay = new JDPay();
System.out.println(jdPay.pay(UUID.randomUUID().toString(), 13.14));
WeChatPay weChatPay = new WeChatPay();
System.out.println(weChatPay.pay(UUID.randomUUID().toString(), 13.14));
}
}
四、优化代码
(1)枚举所有的实现类
package strategy.pay;
import strategy.pay.channel.ALIPay;
import strategy.pay.channel.JDPay;
import strategy.pay.channel.WeChatPay;
public enum PayType {
ALI_PAY(new ALIPay()),
JD_PAY(new JDPay()),
WECHAT_PAY(new WeChatPay());
private Payment payment;
PayType(Payment payment) {
this.payment = payment;
}
public Payment get() {
return this.payment;
}
}
(2)测试
package strategy.pay;
import java.util.UUID;
public class PayTest {
public static void main(String[] args) {
System.out.println(PayType.ALI_PAY.get().pay(UUID.randomUUID().toString(), 13.14));
System.out.println(PayType.JD_PAY.get().pay(UUID.randomUUID().toString(), 13.14));
System.out.println(PayType.WECHAT_PAY.get().pay(UUID.randomUUID().toString(), 13.14));
}
}