0 0

接口转型抽象类的问题5

现有一个接口A,已被系统中多处调用。。
现在有一公共方法想加加入此接口中,想做一个抽象类来代替接口且要让系统中已经调用的类也有此方法。问如何实现?要利用到哪些设计模式的原理呢?

问题补充:
crane_may 写道
如果系统内implement 接口A都没有 extend某个父类,可以直接把A升级为抽象类

如果上述前提不成立,情况就比较复杂

这个不是什么设计模式,而是没有遵守设计模式导致的重构,不过个人觉得设计模式不是万能的,重构无罪

对成型的系统的基类进行扩充困难,是面向对象的弊病,也就有人说面向对象已死



谢谢你的回复。。
我想了两个方案,不过改动都是蛮大的,
A方案:建一个新的抽象类来实现旧的接口,把公共方法放入抽象类中。之后对系统中所有实现该接口的类进行重构,不实现旧接口,改继承抽象类。
B方案:建一个新接口继承旧接口。对于系统中新增的类实现新接口,对于已经实现了旧接口的类,在类实际应用的地方,用适配器来修改应用,以实现新旧接口通用的方案。
2011年7月05日 15:00

2个答案 按时间排序 按投票排序

0 0

同意A方案

2011年7月12日 11:51
0 0

如果系统内implement 接口A都没有 extend某个父类,可以直接把A升级为抽象类

如果上述前提不成立,情况就比较复杂

这个不是什么设计模式,而是没有遵守设计模式导致的重构,不过个人觉得设计模式不是万能的,重构无罪

对成型的系统的基类进行扩充困难,是面向对象的弊病,也就有人说面向对象已死

2011年7月05日 17:23

相关推荐

    \\java类、抽象类、接口、继承和对象解析 .doc

    Java 类、抽象类、接口和继承是面向对象编程的核心概念,它们构成了 Java 语言的基石。在 Java 中,类是用来封装数据和行为的结构,而对象则是类的实例,具有具体的属性和行为。 1. **类与对象的区别** 类是模板...

    接口和抽象类的比较.pdf

    它们都是引用数据类型,在面向对象编程中被广泛用于多态性的实现,即通过向上转型将子类或实现类的对象引用赋值给接口或抽象类的变量。 然而,在不同点上,它们之间有着本质的区别。一个类只能继承一个抽象类,这是...

    java中对象转型多态抽象类接口笔记.doc

    ### Java中的对象转型与多态 ...Java中的对象转型、多态、抽象类以及接口是面向对象编程的重要概念。通过这些机制,我们可以编写更加灵活、可扩展的代码。理解这些概念对于开发高质量的Java应用程序至关重要。

    Java面向对象实验指导书抽象类接口多态[参考].pdf

    在这个实验指导书中,我们将深入探讨其中的抽象类、接口和多态性,这些都是Java软件开发中的重要概念。 1. **抽象类(Abstract Class)** 抽象类是不能被实例化的类,它通常用于定义一组共同属性和行为的模板。在...

    28.接口基本定义版.pdf

    本篇文章主要讲述了接口的基本定义、使用形式、设计模式、与抽象类的区别等知识点。下面是对这篇文章的详细解读和知识点的总结。 1. 接口的基本概念 接口是一种特殊的类,但是在接口里面的组成与类不同,主要是由...

    java类和对象,上转型,接口回调

    有一个抽象类ObjectVolume,如下所示: abstract class ObjectVolume { abstract double getVolume(); //返回物体的体积 } (1)编写球体类,立方体类和圆柱体类,它们是抽象类ObjectVolume的子类。 (2)编写一个...

    第3天(面向对象【接口、多态】)v201703062

    接口是功能的集合,作为数据类型,它比抽象类更抽象。接口的定义使用 `interface` 关键字,例如: ```java public interface Animal { void eat(); void sleep(); } ``` 接口中的方法默认都是 `public abstract`...

    day02-多态&抽象类&接口1

    - 为了访问Cat类的特有方法playGame(),我们需要对a进行向下转型为Cat类型,然后调用playGame()。 总结: 多态是Java面向对象设计的重要特性,它提供了代码的复用性和灵活性。通过多态,我们可以设计出更加通用的...

    完整版优质java课件 Java基础入门教程 Java编程技术14 补充--对多态、抽象和接口的理解(共24页).ppt

    在Java中,抽象可以通过抽象类(Abstract Class)实现,抽象类可以包含抽象方法(没有方法体的方法),用于定义公共接口,但不提供具体实现。使用抽象类可以强制子类实现特定方法,确保子类具有必要的功能。 3. **...

    JAVA基础--复习笔记.pdf

    本文档提供了JAVA基础知识的复习笔记,涵盖了JAVA的基础概念、数据类型、运算符、控制流程、类和对象、继承、多态、抽象类和接口等方面的知识。 一、数据类型 在JAVA中,有以下几种基本数据类型: * 整数类型:...

    就业班JavaSE--day03 每日作业卷1

    在编程实践中,通过接口和抽象类的设计,可以创建灵活、可扩展的系统。例如,定义一个`PlayGame`接口,让手机类和电脑类都实现这个接口,从而实现不同的游戏功能。智能奥迪车(SmartAudi)的例子展示了继承和接口的...

    Java 中的上转型对象 使用

    8. **抽象类与接口**:上转型对象也可以应用于抽象类和接口,抽象类可以有非抽象方法,而接口只包含抽象方法。两者都可以用来实现多态。 9. **设计模式**:在设计模式中,如工厂模式、策略模式等,上转型对象扮演着...

    oop-abstractclass.zip

    通过定义抽象类,我们可以创建指向其子类对象的引用,这种现象称为向上转型。在运行时,这些引用可以根据实际的对象类型执行相应的方法,从而实现多态。 5. **应用场景**: - 当我们发现一组类有共同的行为或者...

    Java--类的继承

    在Java编程语言中,类的继承是面向对象编程的一个核心概念,它允许我们创建新的类(子类)基于...通过实践,尝试创建自己的类层次结构,使用继承、接口和抽象类来解决问题,这将加深对这些概念的理解,并提高编程技能。

    java23.7.12-继承抽象多态

    3. **接口与抽象类的区别**:接口全由抽象方法组成,而抽象类可以包含非抽象方法。一个类可以实现多个接口,但只能继承一个类。 ### 多态(Polymorphism) 多态是指同一个引用类型可以指向不同类型的实例,并能...

    第3天(面向对象【接口、多态】)v201703063

    6. **接口与抽象类的区别**:接口仅包含方法签名,没有实现;抽象类可以包含抽象方法和具体方法。接口强调的是“做什么”,抽象类强调的是“是什么”。 【多态】 1. **多态的前提条件**:多态存在的前提是存在继承...

    Java面试基础

    在Java编程语言中,抽象类和接口是两种主要的抽象数据类型。...以上内容涵盖了抽象类和接口在Java中的定义、使用、区别以及方法重载和覆盖的概念,为Java面试中可能出现的相关问题提供了详细的解释。

    就业班JavaSE--day03 每日作业卷答案2

    - 选择抽象类还是接口通常取决于设计需求,优先考虑使用接口,只有在需要定义子类行为并提供共性功能时才选用抽象类。 4. 多态的理解: - 多态的前提条件包括子类继承父类或类实现接口,以及子类覆盖父类或接口的...

    javaSE学习笔记

    本篇学习笔记主要涵盖了从基础到进阶的Java SE知识,特别是抽象类和接口的使用,这是理解Java多态性和面向对象编程的关键。 **抽象类**是Java中一种特殊的类,它不能被实例化,而是作为其他类的基类,用于定义共同...

Global site tag (gtag.js) - Google Analytics