Imデザインパターンに若干新しく、これはstackoverflowの最初の投稿です。うまくいけば、この質問は意味をなさないでしょう。 Iveは、異なるチャートベンダ(ダンダ、フラッシュなど)のXMLストリングの生成を処理する抽象ファクトリを作成しました。以下は、私の工場のコード概要です(私が助けてくれればさらに多くを含めることができます)。私のクライアントは、すべてのタイプのチャート(キャプション、アニメーションなど)に共通するプロパティを設定できるようにしています。抽象ファクトリパターンとプロパティ
GraphCreator fusion = new FusionGraphs();
//set the props for the graph
fusion.Caption = "Fusion 2D Line Chart";
これを行うには、どのような方法が最適ですか?今、Imは抽象的なクリエイターのプロパティを設定するので、クライアントはそれらにアクセスできるようになりますが、Imは私の工場でこれらのプロパティを複製してxmlを構築する際にアクセスできます。
//これは私があなたの何とか考えて、これは具体的な作成者
public class FusionGraphs : GraphCreator
{
Graph g = null;
//XML parts for fusion 2D multi series
IXMLFactory xmlFactory;
//use xml parts that are needed for the type of fusion graph requested
public override Graph buildGraph(Graph.Types graphType)
{
switch (graphType)
{
case Graph.Types.Single2DLine:
xmlFactory = new Fusion2DSingleXMLFactory();
g = new Single2DLineGraph(xmlFactory);
xmlFactory.Caption = base.Caption;
break;
case Graph.Types.Single2DBar:
xmlFactory = new Fusion2DSingleXMLFactory();
g = new Single2DBarGraph(xmlFactory);
break;
}
return g;
}
}
私は重複部分を省いたと思います。私は実際に、キャプションのGraphCreatorクラスで同じプロパティを作成します。私はクライアントに(グラフクラスまたは何かを介して)アクセスできるようにする必要があるように見えるし、内部でアクセスできるようにxmlfactoryの小道具を作る。 – rahkim
結論は、同じプロパティを2回作成する方法がわかりません。顧客のために1回、工場のために1回。クライアントがそれを見ることができるようにプロパティを作成する方法はありますか?具体的なサブクラスはそれにアクセスできますか? – rahkim
xmlFactoryのプロパティがなくてもいいですか?代わりにGraphCreatorによって実装されたインターフェイス "ICommonGraphProps"があり、共通プロパティの値を読み取る必要があるときはいつでもxmlFactoryがICommonGraphPropsのメンバーにアクセスできるようにすることができますか? – BlueMonkMN