举个例子,我有一个WAV
代表 WAV 声音文件的类。为了方便起见,我需要添加一个WaveformAudioFile
具有完全相同功能的类。
无论可能的设计/风格问题如何,集成新类的合适方法是什么?通过使用扩展(不添加任何内容),使用通用接口或其他方式?
编辑:进一步考虑这一点,如果要考虑设计,是否有避免冗余代码的替代方法?我的意思是如果有多个类,编写接口会很烦人。某种可用于初始化的模式。属性 ?
从我的角度来看,接口是最好的解决方案。为实现此类功能的类声明一个公共接口,并使用此接口而不是直接的类类型定义。
例如:
ISoundFile mySoundFile = getSoundFile();
ISoundFile
您声明的接口在哪里。
1.从设计的角度来看,如果你想让你的类发挥特定的作用,那就选择接口。
2.如果你有不断变化的行为,那么最好将它们封装在抽象类或接口中,然后扩展或实现它以指定某些功能。
/////////////////////////////////// 已编辑: ////// //////////////////////
我认为您指的是DRY 原则(Dont Repeat Yourself),根据此原则,最好将您的信息和行为保存在 Single Sensible Place中。
但是,如果相同功能的不同类的行为不同怎么办。
例如:
考虑Painting
作为一个类。paint() Method
现在
paint() 方法可以有描边、滑动、着色等样式。
然后最好将该方法封装到 Abstract 类或 Interface中。
public interface Paint{
paintDoIt(String style);
}
它不是关于一项令人厌烦的工作,而是关于灵活性和能够在不涉及太多类和不破坏代码的情况下进行更改。
只有一件事是软件工程中的常数,那就是 CHANGE
.
所以我们需要接受它。
使用一个公共interface
并在两个类中实现它。一个主要的好处是您的 WAVE 并且所有类都可以扩展任何其他类。
只需添加此内容,因为它可能会引起某人的兴趣。我想到了另一种解决方案,那就是简单地使用包装类:)。