1

現在、ConfigProfile factory という名前のクラスがあり、デフォルトのプロファイル、現在の設定などのメソッドが含まれています。このクラスは、プロファイル サービスによって内部的に使用されます。これを真のファクトリにして、構成する製品ごとに適切なプロファイル サービスを作成する方がよいのではないかと考えていました。

    public string GetDefaultProfile(string product)
    {
        if (string.IsNullOrEmpty(product))
        {
            throw new ArgumentNullException("product");
        }

        string profile = null;

        if (product.Contains("Product 1", StringComparison.CurrentCultureIgnoreCase) ||
            product.Contains("product1", StringComparison.CurrentCultureIgnoreCase))
        {
            profile = Resources.product1DefaultProfile;
        }

        return profile;
    }

これは 1 つの製品にすぎませんが、さらにいくつかの製品があるため、それぞれに if ステートメントを追加する必要があります。プロファイル サービスには既にインターフェイスがあり、私のプログラムのほとんどで使用されています。また、これと同じ方法を使用する方法がいくつかあります。製品名に基づいて適切なプロファイル サービスを返すファクトリは、より良い解決策でしょうか、それとも何か他にできることはありますか?

編集: これは、このクラスのより単純なメソッドの 1 つです。より複雑なものは、必要な場所から現在のシステム設定を取得するものです。すべての製品と同様に IIS 設定がありますが、テーマをサポートするものもあれば、データベース構成を行うものもあります。

4

1 に答える 1

1

Factory は非常に優れたソリューションです。シンプルなインターフェイスの背後にある構成の複雑さを隠すことができます。

実行時/起動時に設定できるようにする必要がある場合は、ストラテジーと組み合わせてください。

静的ファクトリまたは戦略の両方のソリューションをプロトタイプと組み合わせることができます。同じプロファイルを頻繁に使用し、それが読み取り専用である場合、プロトタイプは最適化として役立ちます。

編集: おそらくすでにプロトタイプを使用しているでしょう。サンプル コードは、複雑な製品として構築するのではなく、プロファイルをコピー/参照しているように見えます。

于 2012-10-18T07:24:43.393 に答える