C ではクラス名の文字列からオブジェクトをインスタンス化できますか?
C にはクラス名を表す文字列からオブジェクトをインスタンス化するメカニズムはありますか?これにより、ファクトリ内の潜在的な派生クラスごとに if-else ステートメントを明示的に定義する必要がなくなります。 class?
問題:
次のクラス構造を考えてみましょう:
そして、派生クラスのインスタンスを作成する、対応するファクトリ クラス BaseFactory指定されたクラス名文字列に基づくクラス:
ただし、このアプローチでは明示的にBaseFactory 内で各派生クラスを指定しますが、派生クラスの数が増えると面倒になる可能性があります。
解決策:
C# のような言語とは異なり、C は本質的に実行時の型情報に基づいてオブジェクトを動的に作成するメカニズム。同様の機能を実現するには、クラス名とオブジェクト作成関数の間のマッピングを構築することを検討できます。
このマップを使用すると、オブジェクトのインスタンス化は次のようになります。
あるいは、次のように登録することもできます。プログラムの初期化中に派生クラスが自動的に作成されます:
このアプローチでは、次の場合に自動的にクラス登録が行われるため、手動のクラス登録が不要になります。クラスが定義されています。
概要:
C はクラス名文字列からのオブジェクトのインスタンス化を直接サポートしていませんが、これらの手法はクラスをマッピングすることで同様の機能を実現する方法を提供します。オブジェクト作成関数に名前を付けるか、登録プロセスを自動化します。
以上がC はクラス名の文字列からオブジェクトをインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。