• java 使用策略模式减少if


    使用多态:通过使用面向对象的多态特性,可以将不同的逻辑封装到不同的类中,避免大量的 if
    语句。使用继承和接口来定义通用的方法,并让具体的实现类实现这些方法。
    使用设计模式:使用设计模式可以更好地组织和管理代码逻辑,减少 if
    语句的使用。例如,工厂模式、策略模式、观察者模式等都可以帮助将复杂的条件逻辑转化为更清晰和可扩展的结构。
    使用映射表:将条件与对应的操作放入一个映射表中,避免使用大量的 if-else 语句。可以使用 Map
    或者其他数据结构来存储条件和对应操作的关联关系,通过查找映射表获取对应的操作。
    使用策略模式:策略模式将不同的策略封装成独立的类,避免使用大量的条件语句。通过定义一个策略接口,然后针对不同的情况实现不同的策略类,根据需要选择合适的策略进行处理。
    使用枚举:使用枚举可以将条件与对应的操作封装到枚举常量中,避免使用大量的 if-else
    语句。每个枚举常量代表一种情况,具有对应的方法或行为,通过枚举常量的方式来执行相应的操作。
    使用函数式编程:Java 8 引入的函数式编程特性可以帮助减少条件判断。通过使用 lambda
    表达式、方法引用等函数式编程的特性,可以将逻辑封装成函数并传递,避免大量的 if-else 语句。
     

    1. interface PaymentStrategy {
    2. void pay(double amount);
    3. }
    4. class CreditCardPayment implements PaymentStrategy {
    5. @Override
    6. public void pay(double amount) {
    7. System.out.println("Paid " + amount + " using Credit Card");
    8. }
    9. }
    10. class PayPalPayment implements PaymentStrategy {
    11. @Override
    12. public void pay(double amount) {
    13. System.out.println("Paid " + amount + " using PayPal");
    14. }
    15. }
    16. class PaymentContext {
    17. private PaymentStrategy paymentStrategy;
    18. public PaymentContext(PaymentStrategy paymentStrategy) {
    19. this.paymentStrategy = paymentStrategy;
    20. }
    21. public void performPayment(double amount) {
    22. paymentStrategy.pay(amount);
    23. }
    24. }
    25. public class Main {
    26. public static void main(String[] args) {
    27. PaymentContext paymentContext1 = new PaymentContext(new CreditCardPayment());
    28. paymentContext1.performPayment(100.0); // 输出:Paid 100.0 using Credit Card
    29. PaymentContext paymentContext2 = new PaymentContext(new PayPalPayment());
    30. paymentContext2.performPayment(50.0); // 输出:Paid 50.0 using PayPal
    31. }
    32. }

  • 相关阅读:
    testng-xslt使用详细教程
    Java学习笔记1—JVM虚拟机—1.3参数调优
    【重拾C语言】七、指针(一)指针与变量、指针操作、指向指针的指针
    项目管理培训超全总结!
    如何利用社交媒体进行跨境电商营销—扬帆际海
    MySQL原理(九):表分区和分库分表
    【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】
    DevOps简介
    最长公共子序列
    [论文精度|博士论文]非结构环境下病虫害识别方法研究
  • 原文地址:https://blog.csdn.net/beautifull001/article/details/134021472