ビルダーパターン:時間内にオブジェクトを作成する段階的

導入

最後の記事では、ビルダーパターンを使用する一般的なケースを調べましたが、オブジェクトが時間内に作成されたときにオプションは触れられませんでした。
ビルダーパターン(ビルダー)は、複雑なオブジェクトを徐々に作成できる生成デザインテンプレートです。オブジェクトに多くのパラメーターまたはさまざまな構成がある場合に特に役立ちます。その使用の興味深い例の1つは、時間内にオブジェクトを作成するプロセスを分離する能力です。
オブジェクトをすぐに作成できない場合があります – そのパラメーターは、プログラムのさまざまな段階で知られるようになります。

Pythonの例

この例では、車のオブジェクトが段階的に作成されます。まず、データの一部がサーバーからロードされ、ユーザーが欠落情報を入力します。

import requests

def fetch_car_data():
    response = requests.get("https://api.example.com/car-info")
    return response.json()

builder = CarBuilder()

# Backend API data
car_data = fetch_car_data()
builder.set_model(car_data["model"])
builder.set_year(car_data["year"])

# User input
color = input("Car color: ")
builder.set_color(color)

gps_option = input("GPS feature? (yes/no): ").lower() == "yes"
builder.set_gps(gps_option)

car = builder.build()
print(car)

API呼び出しを想像してください。データ入力は、アプリケーションのさまざまな部分、または異なるライブラリでも発生します。次に、ビルダーパターンの使用は、上記の簡単な例よりも明白になります。

利点

– 出力は、一時的なアセンブリのためにオプションのデータを保存する必要のない免疫構造です
– オブジェクトは徐々に収集されます
– 複雑なデザイナーを避けます
– オブジェクトのアセンブリコードは、ビルダーの1つの本質でのみ不完全です
– コードを理解する利便性

ソース

https://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook/dp/B000SEIBB8
https://demensdeum.com/blog/2019/09/23/builder-pattern/