`
ganlv
  • 浏览: 35050 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多态与if else

阅读更多
    在过去的一年中,写了不少代码,总是觉得自己的代码少了点东西,感觉不是很顺手,写的时候也是完全随意想当然的写。知道最近看《重构 改善既有代码的设计》这本书的时候才有点启发,如何去把代码组织好。
    曾经我自己说过,写代码无非是if else,现在想想实则不然,遍地都是if else的代码就是难以维护的代码。换说话说,写了过多的if else是由于没有完全的按照面向对象的思维来编写程序,还在面向过程的思维中。在实际的操作过程,我们可以把很多的if else转换成面向对象的多态的方式来处理。

    在面向对象和面向过程的学习中,要更加的面向对象一些。多思考用面向对象的方式实现。

    还有就是数据库设计不应该影响我们应用程序的设计。由于数据是关系数据库,其逻辑结构和面向对象的逻辑结构不应该相同。
    比如说:在实际设计中,数据库常常会有一个type属性。而type属性通常表示类型,而多个类型往往可以通过继承关系表示,而后通过多态实现各自的业务逻辑。但是我们实际操作,往往受到了数据设计的影响,把type设置成一个属性,这样设计的后果,在程序中多处使用if else来区分逻辑,造成了程序难以读懂。
分享到:
评论
1 楼 mercyblitz 2010-06-24  
从本质上面来说都是利用的IF,

多态是运行时动态绑定技术,利用的是虚拟方法表。

有一个组织也有这种想法,“干掉”IF, NO-IF。

相关推荐

    代码中大量的 if else如何优化.doc

    代码中大量的 if else 如何优化 在编程中,我们常常会遇到大量的 if else 语句,这些语句会使得代码变得难以维护和阅读。那么,如何优化这些 if else 语句呢?下面我们来讨论一些常见的优化方法。 首先,让我们看...

    Java利用策略模式优化过多if else代码

    Java利用策略模式优化过多if else代码 策略模式是一种非常有用的设计模式,可以帮助开发者优化代码,避免过多的if else语句。下面是关于策略模式的知识点总结: 1. 什么是策略模式? 策略模式是一种行为型设计...

    Java中利用反射(或spring)和多态来解决大量swich/case或者if/else的方法

    工作中经常会有一些swich case或者if else的情况。一般这种情况一开始可能只有几个,但是几次迭代之后可能就会有非常多。代码不易维护而且代码乱糟糟的。 我在工作中就遇到了这种情况。大致的业务就是我们需要对接很...

    If-Else-Block-Refactoring:使用嵌套的ifelse代码块重构业务逻辑

    3. **多态(Polymorphism)**:如果`if-else`的判断条件基于对象的类型,那么可以利用面向对象的多态性来替换这些条件语句。通过将条件判断移动到对象自身,让对象决定如何执行操作。 4. **状态机(State Pattern)...

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

    "Java编程细节重构:为什么if-else不是好代码详析" Java编程细节重构是一个非常重要的概念,特别是在面向对象设计中,if-else语句是非常常用的条件判断语句,但是,如果滥用if-else语句,会导致代码变得难以维护和...

    多态简单工厂

    else if (type == "ProductB") return new ProductB(); else throw new ArgumentException("Invalid product type"); } } ``` 在这个例子中,`IProduct`是一个接口,`ProductA`和`ProductB`是它的两个实现类。...

    Java模式设计之多态模式与多语言支持

    ### Java模式设计之多态模式与多语言支持详解 #### 引言 本文将深入探讨在实际项目中如何运用多态模式以及如何实现多语言支持。案例来自于一个面向全球消费者的华尔街金融网站项目,该网站需要支持至少19种语言,...

    封装、继承、多态一语道破

    if (age > 0) { this.age = age; } else { // 处理非法输入 } } public int getAge() { return age; } } ``` #### 二、继承 **概念解析:** 继承是面向对象编程中的一个重要特性,它允许一个类(子类)...

    Java-多态--学习笔记.docx

    } else if ("Cat".equals(userInput)) { animal = new Cat(); } else { throw new IllegalArgumentException("Invalid animal type"); } animal.makeSound(); // 根据实际创建的对象类型输出"Woof!"或"Meow!" ...

    c++写的异质链表,使用多态实现

    if (prev) { prev->next = current->next; } else { head = current->next; } delete current; } void LinkedList::traverse() { Node* current = head; while (current != nullptr) { // 处理具体节点...

    Java面向对象程序设计-多态案例实践.pptx

    重写方法必须与父类的方法具有相同的方法签名,包括方法名、返回类型和参数列表。 在Java中,重写方法使用@Override注解,例如: ```java @Override public void timetable() { System.out.println("输出教师课表...

    1Java中的多态和类型转换(难点).docx

    } else if (p instanceof Worker) { ((Worker) p).work(); } ``` 3. **成员变量的特性**:在多态中,成员变量的访问规则如下: - 编译时,查看引用类型所属类中是否包含需要访问的变量。 - 执行时,关注的是...

    简单工厂实现多态比萨店

    else if (pizzaType == "Hawaiian") return new HawaiianPizza(); // 其他比萨类型的判断 else throw new ArgumentException("Invalid pizza type"); } } ``` 在比萨店的业务逻辑中,当客户下单时,我们可以...

    Java项目的状态分发处理工具,能根据对象、json或者map里面的某个属性值分别执行不同的方法

    Java项目的状态分发处理工具,能根据对象、json或者map里面的某个属性值分别执行不同的方法,通过方法解耦的方式,避免大量的if else判断,同时支持java se项目和spring项目 适用场景 大量if else的逻辑 消息通道...

    JAVA基础编程练习:涵盖条件语句、循环结构、类和对象、继承多态及异常处理的应用案例集合

    主要包括:基于if-else等选择性语句的逻辑运算,循环体的搭建及流程管理,面向对象编程思想中的类的设计与应用(比如:定义成员变量、函数重写等)、继承机制的理解和实现、多态特性的展示;还探讨了简单的异常捕捉...

    Java三剑客:封装、继承、多态的魔法世界

    **封装**是面向对象编程中的一个重要概念,它指的是将数据(属性)与操作这些数据的方法(行为)捆绑在一起,并对外部隐藏内部细节。这种机制可以帮助我们更好地控制对对象状态的访问,并提供了更好的数据安全性。 ...

    if实训—体脂数.zip

    总结来说,在“if实训—体数控”项目中,学习者将深入理解C#中的条件判断语句(if, else, else if)及其在处理数据时的应用。这涉及到文件操作、数据处理、条件过滤、面向对象编程等多个方面,对于提升C#编程技能和...

    Java程序设计PPT教程

    Java程序设计PPT教程涵盖了Java编程的基础概念,包括类与对象、类的控制结构、类的重用、接口与多态、输入输出流以及线程等多个主题。在这些章节中,学习者将深入理解Java语言的核心特性。 1. **方法的控制流程** ...

    Python面向对象多态实现原理及代码实例

    if isinstance(m, Man): m.eat() else: print('不能吃饭') manEat(Chinese()) # 输出: 中国人用筷子吃饭 manEat(India()) # 输出: 印度人用右手吃饭 ``` 这种现象就是多态。无论我们传入的是哪种类型的对象,...

Global site tag (gtag.js) - Google Analytics