C言語でビルダー設計パターンを実装する方法はありますか?特に、ビルダーを介して構造体に値を設定することはできますが、ビルダーによって構造体が生成された後は構造体を読み取り専用にすることができますか?私はオンラインで例題を探しましたが、Cで何も見つかりませんでした。ありがとう。 wikipedia pageからCのビルダー設計パターン
5
A
答えて
7
:
... Builderパターンの意図は、入れ子式のコンストラクタアンチパターンへの解決策を見つけることです。テレスコープ・コンストラクタのアンチ・パターンは、オブジェクト・コンストラクタのパラメータの組み合わせの増加が、指数関数的なコンストラクタ・リストにつながる場合に発生します。ビルダー・パターンは、多数のコンストラクターを使用する代わりに、それぞれの初期化パラメーターを段階的に受け取り、その結果生成されたオブジェクトを一度に戻すBuilderオブジェクトを使用します。
これを実現する1つの方法は、ビルドするオブジェクトを記述できるインタフェースを持つビルダーオブジェクトを定義することです。次に、その説明に基づいてターゲットオブジェクトを構築するための別の方法を提供します。返されたオブジェクトを直接変更することはできない発信者へconst struct car
信号へのポインタを返す
struct car;
struct car_builder;
enum CAR_OPTIONS { CAR_OPTION_NOT_AN_OPTION,
CAR_OPTION_SEATS, CAR_OPTION_NAVIGATION, /* ... */ };
struct car_builder * create_car_builder();
/*
* Positive option sets the option, negative option unsets it.
* If the option takes a parameter, pass them in the varargs.
*/
void car_builder_option (struct car_builder *, int option, ...);
/*
* builds a car
*/
const struct car * car_builder_construct (struct car_builder *options);
/*
* junks the car
*/
void car_builder_destruct (const struct car *);
/* ... */
struct car_builder *options = create_car_builder();
car_builder_option(options, CAR_OPTION_SEATS, 2);
car_builder_option(options, CAR_OPTION_SPORT_CAR);
car_builder_option(options, CAR_OPTION_NAVIGATION);
car_builder_option(options, -CAR_OPTION_POWER_WINDOWS);
const struct car *car = car_builder_construct(options);
:ウィキペディアのページで車の例を使用
。
関連する問題
- 1. C++の設計パターン:
- 2. ビルダー対Decoratorパターン
- 3. C#戦略パターン設計の問題
- 4. NetBeans GUIビルダー設計パネルでの描画?
- 5. C++ビルダーTSサービス設定
- 6. シンプルなXMLシリアライズ+ビルダーのパターン
- 7. GraphQLデータベース設計パターン
- 8. actionscriptのオブジェクトプール設計パターン
- 9. メディエータの設計パターン〜=トランザクションスクリプト?
- 10. WCFと工場設計パターン
- 11. サーキットブレーカ設計パターン実装アドバイス
- 12. C#の工場設計パターンの使用例
- 13. C++ビルダーのスレッド
- 14. Javaビルダーのパターンと "深い"オブジェクト階層
- 15. C#でオブジェクトグラフを作成するように流暢なビルダーを設計する
- 16. Cで工場設計パターンを実装する方法
- 17. メッセージキューサービスへのラッパーの設計パターン
- 18. オブジェクトプールの設計パターンの問題
- 19. アプリケーションの設計パターンの選択
- 20. Intellisense in C++ビルダー?
- 21. C++/CLIまたはC#を使用した状態設計パターンの実装
- 22. クライアントサーバーのアプリケーション設計パターンとプロトコル
- 23. オプティミスティックキャッシング同時実行性の設計パターン
- 24. NoSQLからSQLへのアダプター設計パターン
- 25. 状態設計パターンを使用した再設計 - 疑問
- 26. ビルダー・パターンにビルダー・インターフェースで `GetResult()`メソッドがないのはなぜですか?
- 27. 条件付きタスク設計パターン
- 28. 工場設計パターンとキーワード「新規」
- 29. 大規模なAjaxアプリケーション設計パターン
- 30. 工場方式設計パターン-PHP
'const struct foo * build_struct();'次に、関数が構造体のメモリをmallocateするようにします。関数内では 'コンス'ではなく、外部から見えるときに 'const'になります。 –
@ H2CO3:答えとして投稿する必要があります。 –