ストラテジーとアブストラクトファクトリのデザインパターンについては知っていますが、現在の問題は解決していません。
非常に基本的なGUIを提供するC++ライブラリを作成しています。ただし、コンパイル時に、実際にGUIをレンダリングするために使用するGUIライブラリ(QtやFLTKなど)をユーザーが選択できるようにしたいと思います。ただし、ユーザーは私のライブラリのメソッドについてのみ知っている必要があります。
QtバックエンドまたはFLTKバックエンドのいずれかを使用して、変更なしで同じコードをコンパイルできるはずです。
私は次のようなことを考えました:
class A
{
// do things that are not specific to QT or FLTK here as there are many
// methods I will need independent of the backend
}
class QT_A : public A
{
// Implement the actual creation of a window, display of a widget here using Qt
}
class FLTK_A : public A
{
// Implement the actual creation of a window, display of a widget here using FLTK
}
QT_A
問題は、ユーザーにまたはについて知られたくないということですFLTK_A
。ユーザー(開発者)はただ対処する必要がありA
ます。また、ライブラリがQtとFLTKの両方に依存することを望まないため、両方のバリアントを同時に持つことはできません。コンパイル時に選択された方だけです。