インターフェイスだけを公開するべきか否か。

ストリーミング再生のコードは書けたんですが、帰宅したのが12時だったので今日はやめておきます。
で、サークルのRPG企画に参加させて頂いてるんですが、プログラム班リーダーになり、更に仕様書みたいな、大きな枠組みを考えてきて欲しいという事で。
私自身、チームで作った記憶が皆無なので微妙な所ですが、こういったときの場合はインターフェイスクラスを書いて「こんな感じの事ができると良いな」って感じで良いんでしょうかね?
例えば、サウンドノベル風に文字列を1文字ずつフェードインして描画するようなクラスを作成する場合、まず描画したい文字列をセットして描画、フェードフレームは文字色、フォントサイズをプロパティで設定する場合、こんな感じでしょうか。

class string_drawer
{
public:
    virtual ~string_drawer() {};

    virtual void set_string( const std::string& text )=0;
    virtual void set_fadeframe( unsigned int frame_count )=0;
    virtual void set_size( unsigned int text_size )=0;
    virtual void set_color( unsigned int text_color )=0;
    virtual void draw()=0;

    typedef boost::shared_ptr<string_drawer> value_type;
    static string_drawer::value_type create_instance(); 
};

かなり適当になってますが、今回はそこまで問題じゃないので目を瞑ってください…。
こういった感じでインターフェイスを外部公開しておいて、create_instanceのようなインスタンス生成メソッドを用意しておけば問題ないのでしょうかね?
というか、実際仕様要求は紙に書くかインターフェイスをヘッダに書いて公開しておくかな気が私はしたので、企業のプロジェクトに厳密に沿ってやる必要はないだろう、と。
後は、これを継承したクラスを各自で作ってもらって、誰かが纏め上げる、という構図で良い気がします。
実際ゲーム自体の仕様のいくつかが決まってないので何ともいえない箇所がありますが、その辺がどうなっても影響ないように柔軟に書くのを意識して書いてみたいですね。
私自身がプロジェクト形式で作ったことが無いという事実がちょっと不安要素なのですが…。