java - BestPractices : Is it bad OOP to subclass standard classes into a new one that does same thing, 但 "presuming" future 有变化吗?

标签 java android oop design-patterns

<分区>

我以前也有过类似的案例,这里只是举例说明:

我要在我的 android 应用程序中实现一个新功能(但这适用于任何类型的 OO 项目),此时我需要在每个编辑文本的“setVisibility”方法中实现一些“操作”我的每项 Activity 。

为此,我必须子类化“EditView”,并覆盖“setVisibity”方法:

@Override
public void setVisibility(int visibility)
{
    super.setVisibility(visibility);
    // --> do my stuff here! <--
}

到目前为止,一切顺利...问题是要更改我拥有的所有 Activity (超过 200 条代码行),然后我想:“我到底为什么没有开始这个项目子类化标准 EditText,因为我知道我需要实现类似这样的东西”。

这就是重点:将一个“标准类”子类化为一个新的完全相同的东西但只是“假设”这样的情况的 OOP 不好吗?我的意思是,子类化一切,例如按钮、 Activity 等。

AFAIK、设计模式和 OOP 不鼓励“假设因素”,但我想听听你们根据你们的编程经验“在现实生活中做了什么”(或考虑一下)。

此外,也许这类问题(“你的想法”、“你的意见”)在 SO 中不是一个好的做法,但我找不到更好的地方来提出它。

最佳答案

除非您实际进行更改,否则没有理由删除代码。这是浪费精力,只会使您的代码库膨胀。

如果您发现自己处于重复进行相同修改的情况,请考虑重构以共享通用代码。或者在某些情况下,生成这些代码 fragment 是有好处的(例如,Avro 就是这样做的)。

关于java - BestPractices : Is it bad OOP to subclass standard classes into a new one that does same thing, 但 "presuming" future 有变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349006/

相关文章:

android - 错误 : Gradle DSL method not found: 'implementiation()' Possible causes:

android - Sencha Touch web 移动应用程序开发

PHP 是否面向对象?

c# - 当创建类的实例时,使用默认值初始化类属性的方法更好

java - 通知后台服务

Java Spring Data MongoDB 和 Java 8 时间

java - 有没有办法从应用程序读取 Android 手机上的传入通知?

Android 应用程序因 C++ 中的字符串操作而崩溃

Javascript对象构造函数和设置属性

java - java8 Stream的filter()和map()方法是否使用迭代?