設定情報読み込みクラスの設計

この頃、JavaやらC#やらであまり大きくないプログラムを組んでいるのですが、設計でちょっと気になったことがあったので、ここに書いてみます。指摘、ご意見など頂けると助かります。
Javaで話を進めますが、他のオブジェクト指向言語でも大きく変わらないかな?と思います。と言うのは、外部ファイルにプログラムの設定情報を持たせた場合に、その設定情報を読み取るクラスの設計をどうするのが良いかということです。現状、私的には以下の2つのどちらかが良いかな?と実際使ってみるのですがどうなんでしょう?*1

  1. java.util.Propertiesなどをラップしたクラスを作り、String型以外の値を欲しい場合に型変換機能を追加したりしておく。設定情報利用側からは、propertiesファイルのキーを文字列で指定して値を受け取る。
  2. 設定情報読み取り用のインターフェイスを用意する。インターフェイスには各項目毎に何の型を返すかを明確にしておく。設定情報利用側からは、該当するメソッドを呼んで値を受け取る。

ここで、1と2のメリットとデメリットをまとめます。1のメリットは設定情報読み込みクラスが単純になること。ファイル形式が同じであれば別の時にも共通で使えます。デメリットとしては、値を受け取る側が文字列などでキーを指定することになるため、エラーチェックができない点と、さらに受け取れる値の型を分かっている必要があることです。
2は1の場合とほぼ逆の関係になっていて、メリットとしては受け取れる型・値がインターフェイスにより明確に定義されていること。また、設定ファイルの形式を後から変更しても受け取り側の変更が基本的に不要なこと。デメリットとしては、設定情報の各項目毎にメソッドを用意する必要があるので実装が面倒なこと。設定項目が追加になった場合にはインターフェイスと実装クラス、両方を変更する必要があることです。
どちらも一長一短ですが、どちらかと言えば1は小規模向け、2は大規模向けなアプローチなのかな?と思っています。どうなんでしょうか?

*1:ここで、Javaなので設定ファイルはpropertiesファイルとしますが、XMLだったりただのテキストだったりした場合も変わらないと思います。