MST

星途 面试题库

面试题:Java多态在复杂项目的设计模式中的应用

在一个大型企业级应用项目中,使用了策略模式,结合Java多态性,阐述策略模式中如何利用多态实现不同算法的切换和复用。例如,在订单支付模块,有支付宝支付、微信支付等不同支付策略,以代码示例说明如何通过多态实现这些支付策略的灵活切换与管理。
12.4万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 定义支付策略接口
    public interface PaymentStrategy {
        void pay(double amount);
    }
    
  2. 实现具体支付策略类
    • 支付宝支付策略
    public class AliPayStrategy implements PaymentStrategy {
        @Override
        public void pay(double amount) {
            System.out.println("使用支付宝支付:" + amount + "元");
        }
    }
    
    • 微信支付策略
    public class WeChatPayStrategy implements PaymentStrategy {
        @Override
        public void pay(double amount) {
            System.out.println("使用微信支付:" + amount + "元");
        }
    }
    
  3. 订单类中使用策略模式
    public class Order {
        private PaymentStrategy paymentStrategy;
    
        public Order(PaymentStrategy paymentStrategy) {
            this.paymentStrategy = paymentStrategy;
        }
    
        public void payOrder(double amount) {
            paymentStrategy.pay(amount);
        }
    }
    
  4. 客户端使用示例
    public class Client {
        public static void main(String[] args) {
            // 使用支付宝支付
            Order aliPayOrder = new Order(new AliPayStrategy());
            aliPayOrder.payOrder(100.0);
    
            // 使用微信支付
            Order weChatPayOrder = new Order(new WeChatPayStrategy());
            weChatPayOrder.payOrder(200.0);
        }
    }
    

在上述代码中,PaymentStrategy 接口定义了支付的抽象方法 payAliPayStrategyWeChatPayStrategy 类实现了该接口,提供了具体的支付逻辑,这就是多态的体现。Order 类通过持有 PaymentStrategy 接口类型的对象,在运行时可以根据传入的具体策略对象(支付宝支付策略或微信支付策略),灵活地切换和复用不同的支付算法,实现了策略模式中不同算法的灵活切换与管理。