这段代码要如何修改才能使用工厂方法模式
时间: 2024-03-26 16:34:21 浏览: 80
工厂方法模式源代码
如果要使用工厂方法模式,可以将AudioFilter类改写成一个抽象类,并添加一个抽象方法createFilter(),用于创建符合特定条件的文件过滤器。具体实现类可以继承这个抽象类,并实现createFilter()方法,以创建不同的过滤器对象。修改后的代码如下所示:
```java
public abstract class AudioFilter extends FileFilter {
public abstract FileFilter createFilter();
}
```
```java
public class MP3Filter extends AudioFilter {
public FileFilter createFilter() {
return new AudioFilter() {
public boolean accept(File f) {
String fileName = f.getName().toLowerCase();
return fileName.endsWith(".mp3") || f.isDirectory();
}
public String getDescription() {
return "*.mp3";
}
};
}
}
```
```java
public class OggFilter extends AudioFilter {
public FileFilter createFilter() {
return new AudioFilter() {
public boolean accept(File f) {
String fileName = f.getName().toLowerCase();
return fileName.endsWith(".ogg") || f.isDirectory();
}
public String getDescription() {
return "*.ogg";
}
};
}
}
```
这样,我们就可以通过具体的实现类来创建不同类型的过滤器对象,而无需在原来的过滤器类中进行硬编码。
阅读全文