どのデザインパターンにつまずいているかを理解しようとしています...私が使用している言語はMatlabであり、オブジェクト指向は一部の領域で少し弱く、デザインパターンの実装に比較的経験がありません。
コンストラクターが過度に複雑になっている ComplexObject があります。まず、私のコンストラクターは 0、1、または 2 つの引数を許可しました。これは、「空の」ComplexObject、ModelObject から構築された ComplexObject、または ModelObject+ConfigObject から構築された ComplexObject です。(ModelObject と ConfigObject は基本的なファイル パーサーです)。
Matlab ではコンストラクターをオーバーロードできないため、コンストラクターが単なる空のクラス初期化子になるように、一部を静的メソッドに変更した後、コンストラクターへの入力引数のクラス型を本質的に切り替えました。静的な ComplexObject.createFromModel および ComplexObject.createFromModelAndConfig クラスは、ComplexObject を生成しました。
次に、自分の ComplexObject コードがこのような構造要素に支配されており、ビジネス ロジックが明確ではないと判断したため、ComplexObjectFactory クラスを作成し、基本的に静的メソッドをそのクラスに移動しました。静的メソッドは実際には、ComplexObject を構築するために、よりプライベートな (静的!?) メソッドを呼び出しているため、これらのプライベートな静的メソッドの呼び出し規則について混乱に陥りました :(
最後に、ComplexObject の一部をディスクに書き戻すコードを追加しようとしています。興味深いことに、これは実際には ConfigObject の構築に使用されるのと同じディスク ファイルです。物事をさらに複雑にするために、複数のタイプの「構成」ファイル形式が必要です。
私の現在のクラスは次のようになります。
classdef ComplexObjectFactory
methods (Static)
function product = createFromModel(modelObj)
product = ComplexObject()
ComplexObjectFactory.helper1(product)
end
function product = createFromModelAndConfig(modelObj, configObj)
product = ComplexObjectFactory.createFromModel(modelObj)
ComplexObjectFactory.helper2(product, configObj)
end
end
methods (Private, Static)
function helper1(product)
function helper2(product)
end
end
classdef ComplexObject
methods
function self = ComplexObject(varargin)
<init>
end
end
end
classdef ComplexObject