以下のクラス ダイアグラムでは、Bridge デザイン パターンを使用して単純なドキュメント作成アプリケーションを実装しようとしました。具体的な「DocMaker」はドキュメントのレイアウトを担当しますが、それぞれが「IFileFormat」を受け入れて各ドキュメントを異なる形式に生成します
私の問題は、ドキュメントが PDF の場合、ドキュメントを特別な方法で変更できるようにしたいということです。
DocMakerLayoutA であろうと DocMakerLayoutB であろうと、ドキュメント作成の最後にこの特別な PDF 機能を実行したいのですが、すべてがインターフェイスによって制御されているため、その場所が見つからないようです。
「IDocMaker」に「DoSomethingSpecialForPDF」という関数を追加すれば動きますが、「FileFormarBMP」クラスについては何もしないようにしなければなりません。それはちょうど悪い設計のようです。
このことを最初から間違って設計したのでしょうか、それともこの構造でこれを行う方法はありますか?