これは一般的なソフトウェア設計の問題です。
複数のプラットフォームをサポートするには、#if コンパイラ ディレクティブを使用することをお勧めします。たとえば、次の 3 つのファイルがあります。
IScreen.cs
public interface IScreen {
...
}
ScreenWin.cs
#if WIN
public class Screen : IScreen {
...
}
#endif
ScreenMac.cs
#if WIN
public class Screen : IScreen {
...
}
#endif
これについて素晴らしいと思われるのは、BDD を使用して次のようなものを作成できることです。
Given a Screen exists with width: 1920 and height: 1080
また、コンパイラ ディレクティブに基づいて正しい画面が使用されます。
これにより、抽象ファクトリを使用するよりもパフォーマンスが向上するようです。
いくつかの欠点は何ですか?