首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ogg音频格式转换类

Ogg音频格式转换类
EN

Code Review用户
提问于 2013-01-03 07:05:13
回答 1查看 649关注 0票数 2

这是我的命令接口:

代码语言:javascript
复制
public interface IConverter {
    void convert();
}

这是我的接受者课:

代码语言:javascript
复制
public class Ogg extends Audio{

    private File src;
    private File trgt;

    public static final String CODEC = "libvorbis";
    public static final String FORMAT = "ogg";

    public Ogg(File src, File trgt){
        this.src = src;
        this.trgt = trgt;
    }

    public void convertToOgg(){
        audioAttr.setCodec(CODEC);
        encoAttrs.setFormat(FORMAT);
        encoAttrs.setAudioAttributes(audioAttr);
        try {
            encoder.encode(src, trgt, encoAttrs);
        } catch (IllegalArgumentException e) {
             e.printStackTrace();
        }
    }
}

这是我的具体命令:

代码语言:javascript
复制
package org.hitplay.audio.converters;

public class OggConverter implements IConverter {

    private Ogg ogg;

    public OggConverter(Ogg ogg){
        this.ogg = ogg;
    }
    @Override
    public void convert() {
        ogg.convertToOgg();
    }
}

这是我的扑克课:

代码语言:javascript
复制
public class AudioConverter {
    IConverter audio;

    public AudioConverter(IConverter audi){
        this.audio = audi;
    }
    public void setAudio(IConverter audio){
        this.audio = audio;
    }
    public void convert(){
        audio.convert();
    }
}

目前,我已经研究了此链接上的命令设计模式,我想知道我是否正确地实现了这个设计模式。如果我没有,请告诉我为什么,以及我如何可以改进这个代码。此外,除了Ogg and OggConverter之外,我还有其他类;我还有Mp3Mp3Converter

EN

回答 1

Code Review用户

发布于 2013-01-03 12:49:43

我不认为OggConverter类的原因就像现在这样。

相反,只需将接口IConverter添加到Ogg类中即可。并删除所有其他类,因为只有转发调用。

IConverter converter = OggConverter(Ogg(file1,file2));

如果我们将接口添加到Ogg中

IConverter converter = Ogg(file1,file2);

我也不知道AudioConverter类的原因,除此之外,它还可以将ref存储到IConverter,但是我们可以将这个引用存储在其他地方。

除了改进,还有那些CODECFORMAT字符串常量。而不是string,您应该提供枚举。

代码语言:javascript
复制
public enum AudioCodec {
  LIBVORBIS;
}


public enum AudioFormat {
 OGG("ogg"),
 MP3("mp3");

private final String ext; 

private AudioFormat(String ext) {
  this.ext = ext;
}


public String getExt() {
   return this.ext;
 }
}
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/20114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档