`
jianqicui
  • 浏览: 10950 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

从if/else到抽象

 
阅读更多

if/else多,让人看得心烦。if/else层次深,让人看得头痛。

 

怎样才能让代码优雅呢?

 

介绍一种方法。步骤如下:

1. 将if/else区块中逻辑抽象成接口。

2. 将各个if/else分支中的逻辑打散到实现类中。

3. 使用工厂模式,将不同的条件路由到实现类中。

 

假如有如下代码:

if (cond == 1) {
    do business 1
}

...
if (cond == 2) {
    do business 2
}

 

实现过程

1. 提炼接口

public class Business {
    void doBusiness();
}

 

2. 实现类

public class Business1 {
    public doBusiness() {
        do business 1
    }
}
public class Business2 {
    public doBusiness() {
        do business 2
    }
}
 

3. 工厂类路由

    工厂类

public class BusinessFactory {
    private BusinessFactory() {
    }

    public static Business getInstance(int cond) {
        if (cond == 1) {
            return new Business1();
        }
                
        if (cond == 2) {
            return new Business2();
        }
    }
} 

    使用类

Business business = BusinessFactory.getInstance();
business.doBusiness();

 

这样,以上代码就看起来优雅多了。

分享到:
评论

相关推荐

    优化if/else测试代码包cheng.rar

    在编程领域,优化if/else语句的使用是提高代码可读性、可维护性和执行效率的重要手段。这里我们探讨的“优化if/else测试代码包”提供了两种不同的方法来解决这个问题:策略模式+工厂模式以及使用枚举。这两种方法各...

    javascript 从if else 到 switch case 再到抽象

    我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch 。可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( ...

    编译原理课程设计 if-else ll(1)

    2. **LL(1)分析**:LL(1)是一种自左向右扫描输入的预测解析方法,其中L代表从左到右扫描,L也代表Left-to-right,第一个1代表使用第一个输入符号进行预测,第二个1代表最多只能向前看一个输入符号来决定下一步动作。...

    IF-ELSE条件语句的翻译程序设计(简单优先法、输出四元式)

    在编程语言的编译原理中,IF-ELSE条件语句的翻译是编译器设计中的重要环节。简单优先法和输出四元式是两种常见的中间表示(Intermediate Representation, IR)技术,它们在编译过程中起着关键作用。下面将详细阐述这...

    编译原理 if-else条件语句的翻译(Java)

    《编译原理与Java if-else条件语句的翻译及循环嵌套》 在计算机科学领域,编译原理是理解程序设计语言底层运作的关键。它涉及词法分析、语法分析、语义分析以及代码生成等多个步骤,使得源代码能够被转换为机器可...

    基于PL/0语言的扩充——if-then-else,do-while-until,for

    在这个基于PL/0语言的扩充项目中,我们主要关注了三个重要的控制结构:if-then-else,do-while-until,以及for循环。这些结构是高级编程语言中不可或缺的部分,它们提供了条件执行和迭代的能力。 首先,让我们深入...

    IF-ELSE条件语句翻译(简单优先法、输出三地址表示)

    如果`t1`的值为真(非零),则跳转到标签`L1`执行IF部分的代码;否则,执行ELSE部分的代码。 在汇编课程设计中,理解如何将高级语言的IF-ELSE语句转换成这样的低级表示至关重要。通过这种方式,程序员可以更好地...

    编译课设 IF-ELSE条件语句的翻译程序设计

    对于IF-ELSE,代码生成器需要输出一个分支指令,根据条件的真假跳转到相应的代码块。 文件名“Wp编译原理”可能是指包含这个过程的文档,涵盖了编译原理的基本概念和本课设的具体实现细节。在完成课设时,参考此类...

    IF-ELSE条件语句的翻译程序设计(LR方法、输出三地址表示)

    在这些步骤中,编译器会构建分析表,然后使用该表解析源代码,生成抽象语法树(AST),这个过程就是分析IF-ELSE条件语句的关键。 然后,我们转向输出三地址表示。三地址码是一种简单的中间表示形式,每个操作都有三...

    PHP程序设计-3期(KC016) 2.6.1条件控制if…else语句拓展知识.doc

    本篇文章将深入探讨`if…else`语句的拓展知识,包括如何利用自定义函数来封装判断逻辑以及不同类型的`if…else`句型。 一、自定义函数与`if…else`结合 自定义函数允许我们将复杂的逻辑封装起来,方便代码的复用和...

    策略模式干掉Spring中大片的 if else.docx

    策略模式在 Java 中的应用 - 剔除 if-else 代码,提高代码可读性 在软件开发中,if-else 语句是非常常见的,但是大量的 if-else 语句会使代码变得难以阅读和维护。今天,我们将讨论如何使用策略模式来取代 if-else ...

    Java编程细节重构之为什么if-else不是好代码详析

    在使用if-else语句时,我们需要注意到,if-else语句可能会发展出许多个分支,这将使得代码变得非常复杂。如何避免这种情况?我们可以使用工厂模式来耦合条件判断的代码块,使得代码变得更加清晰和易于维护。 在重构...

    If else 策略模式处理方式 (日期类处理)

    在Java中,策略模式通常涉及到接口或者抽象类定义策略接口,以及一系列实现了该接口的具体策略类。现在我们将探讨如何在日期类处理中使用if-else和策略模式。 首先,让我们了解日期类处理的基本概念。在Java中,...

    Java设计模式之工厂方法的ifelse实现的源码

    在给定的"Java设计模式之工厂方法的ifelse实现"源码中,我们可以看到作者通过if...else语句来实现工厂方法的具体逻辑。通常,这种实现方式是针对不同类型的对象,根据条件判断来决定调用哪个具体类的构造函数。这种...

    浅谈Spring Boot中如何干掉if else的方法

    使用策略模式可以将业务逻辑从if else语句中提取出来,使用不同的处理器来实现不同的业务逻辑。 在Spring Boot中,我们可以使用@Autowired注解来注入HandlerContext,HandlerContext是一个处理器上下文,用来保存...

    IF-ELSE条件语句的翻译程序设计(LR方法、输出四元式)收集.pdf

    - **系统流程图**:用流程图清晰地描绘出从输入源代码到生成目标代码的整个过程,包括各个阶段的转换步骤。 - **算法描述**:详细说明每一步的具体算法实现,例如LR分析算法的实现、条件判断和跳转的中间代码生成...

    抽象方法简单工厂

    } else if ("Huawei".equals(brand)) { return new HuaweiPhone(); } else { throw new IllegalArgumentException("Invalid brand"); } } } ``` 在实际应用中,客户端代码只需调用工厂类的`createPhone`方法...

    if...else...恋爱代码

    此外,提到“恋爱代码”,我们还可以想象到一些更复杂的逻辑,比如使用`switch`语句(在某些语言中)或嵌套`if...else`来处理多种可能的情况,或者引入权重系统来评估关系的多个方面。但这些都只是对恋爱关系的抽象...

Global site tag (gtag.js) - Google Analytics