2016-03-31 4 views
1

私は以下の問題があります:
私は静的ファクトリクラスとたくさんのプロダクトクラスを持っています。
Factoryクラスには一連のString Vectorsが与えられ、BaseProductClassとしてProduct Objectを返すことができます。どのように文字列パラメータを使用して他のクラスを自動的に初期化できるクラスを作成しますか

私は基本的にFactoryクラスに引数 "banana"、 "green"、 "fresh"を与え、Productクラスとして緑色のFresh Bananaを返します。
問題点Factoryクラスは、すべてのProductクラスについて技術的に知ってはならず、Product基本クラスのみを知っている必要があります。ただし、すべてのProductクラスがジェネリック型を識別する文字列で暗黙的に格納されている(または文字列がクラスの一部であり、なんとか抽出できる)型配列が必要です。
最初の文字列引数を取り、それを型に接続し、この型を文字列配列に送り、それ自体を初期化できるようにすべきです。

最後に新しいProductクラスを作成して一般的なtypearrayに入力するだけです。
誰かがこれのようなものを実現する最も洗練された方法を知っていますか?

答えて

0

それぞれの製品クラスには、たとえばBaseProductFactoryクラスから継承された独自のファクトリが必要です。このクラスは、例えば、そのクラスの新しいインスタンスを構築することによってサブクラスに実装された仮想のBaseProductClass *create()メソッドを宣言します。

"generic typearray"は、製品名を対応する製品クラスのBaseProductFactoryインスタンスへのポインタにマップします。

あなたは基本的に、製品クラスに加えて、工場でタイプ消去を行っています。

+0

私は少し不平を言って、TemplatesやArrayに保存できるものを使って自動化する方法があると期待しました。しかし、あなたの方法はかなり良く聞こえるので、それに感謝します。私は大丈夫です。 – user2741831

+0

工場のサブクラスはもちろん、BaseProductFactoryクラスを継承したテンプレートにすることができます。 –

+0

大丈夫、ありがとう! – user2741831

関連する問題