mobyletのPC接続か携帯端末接続かを判定するロジック

mobyletのfilterを使うと文字コード判定がどうもうまくいかなくて、とりあえず携帯端末からの接続かを判定したかったので下記のようなコードを書いた。

    private Carrier getCarrier(String userAgent) {
        List<MobyletDialect> dialects = new ArrayList<MobyletDialect>();
        dialects.add(new MobyletAuDialect()); // MobyletDialectを常にnewしているのはよくないよ。
        dialects.add(new MobyletDocomoDialect());
        dialects.add(new MobyletSoftbankDevDialect());
        dialects.add(new MobyletSoftbankDialect());
        if (StringUtils.isNotEmpty(userAgent)) {
            for (MobyletDialect dialect : dialects) {
                if (dialect.getCarrierMatchRegex().matcher(userAgent).matches()) {
                    return dialect.getCarrier();
                }
            }
        }
        return Carrier.OTHER;
    }