类的“同义词”

时间:2012-07-20 05:32:13

标签: java class synonym

为了举例,我有一个代表WAV声音文件的WAV类。为方便起见,我需要添加一个名为WaveformAudioFile的类,它具有完全相同的功能。

无论可能的设计/风格问题如何,整合新课程的适当方式是什么?通过使用扩展(没有添加任何内容),使用通用接口或其他东西?

编辑:进一步考虑这一点,如果要考虑设计,是否可以选择避免冗余代码?我的意思是,如果有几个类,编写接口会很烦人。某种可用于初始化的模式。属性?

4 个答案:

答案 0 :(得分:2)

1。从设计的角度来看,如果您希望您的课程扮演特定角色,请转到界面。

2. 如果您有不断变化的行为,那么将它们封装在Abstract类或接口中会更好,然后扩展或实现它以指定某些功能。

////////////////////////////////////////// 编辑: //////////////////////////////

我认为你指的是 DRY原则(不要重复自己),根据这个原则,更好地将你的信息和行为保持在单一明智的地方

但是,如果相同功能的不同类的行为不同,那该怎么办呢?

例如:

Painting视为带有paint() Method

现在

paint()方法可以有Stroking,gliding,shading等样式。

然后更好地将该方法封装到Abstract类或接口

public interface Paint{

paintDoIt(String style);

}

不是一件令人讨厌的工作,而是关于的灵活性,并且能够在不触及太多课程且不破坏代码的情况下进行更改

只有一件事是软件工程中的常数 CHANGE

所以我们需要采纳它。

答案 1 :(得分:1)

使用公共interface并在两个类中实现它。一个主要的好处是你的WAVE,所有类都可以扩展任何其他类。

答案 2 :(得分:1)

从我的角度来看,界面是最好的解决方案。为实现此类功能的类声明一个公共接口,并使用此接口而不是直接类类型定义。

例如:

ISoundFile mySoundFile = getSoundFile();

ISoundFile是您声明的接口。

答案 3 :(得分:0)

添加此内容可能会引起某些人的兴趣。我想到了另一种解决方案,那就是简单地使用包装类:)。