最終更新日時
Feb 20, 2024 9:05 AM
ツール
ChatGPT
利用シーン
設計/アーキテクチャ設計
言語別デザインパターンのサンプルコードを教えてもらう。
今回はBuilder パターン
質問例
Builder パターンを以下の言語でそれぞれ作成して下さい。
・Java
・TypeScript
・Go
・Kotlin
回答内容
Builder パターンは、複雑なオブジェクトの構築を段階的に行うためのデザインパターンです。各言語での実装例を以下に示します。Javaの実装例
public class Car { private final String make; private final String model; private final int year; private Car(Builder builder) { this.make = builder.make; this.model = builder.model; this.year = builder.year; } public static class Builder { private String make; private String model; private int year; public Builder make(String make) { this.make = make; return this; } public Builder model(String model) { this.model = model; return this; } public Builder year(int year) { this.year = year; return this; } public Car build() { return new Car(this); } } }
TypeScriptの実装例
class Car { make: string; model: string; year: number; constructor(builder: CarBuilder) { this.make = builder.make; this.model = builder.model; this.year = builder.year; } } class CarBuilder { make: string; model: string; year: number; setMake(make: string): CarBuilder { this.make = make; return this; } setModel(model: string): CarBuilder { this.model = model; return this; } setYear(year: number): CarBuilder { this.year = year; return this; } build(): Car { return new Car(this); } }
Goの実装例
package main type Car struct { make string model string year int } type CarBuilder struct { car Car } func NewCarBuilder() *CarBuilder { return &CarBuilder{car: Car{}} } func (b *CarBuilder) Make(make string) *CarBuilder { b.car.make = make return b } func (b *CarBuilder) Model(model string) *CarBuilder { b.car.model = model return b } func (b *CarBuilder) Year(year int) *CarBuilder { b.car.year = year return b } func (b *CarBuilder) Build() Car { return b.car }
Kotlinの実装例
class Car(val make: String, val model: String, val year: Int) { data class Builder(var make: String = "", var model: String = "", var year: Int = 0) { fun make(make: String) = apply { this.make = make } fun model(model: String) = apply { this.model = model } fun year(year: Int) = apply { this.year = year } fun build() = Car(make, model, year) } }
これらの例では、
Car
オブジェクトの構築過程をBuilder
クラスを通して制御しています。各言語の構文と特性に合わせて、適切な実装方法が選ばれています。
リンクは準備中