このサイトはCookieを使用しています。サイトの使用を続けることで、Cookieの使用に同意することになります。

Logo
    生成AI活用ガイド
    生成AI活用ガイド

    言語別デザインパターンのサンプルコードを教えてもらう

    最終更新日時
    Feb 20, 2024 9:05 AM
    ツール
    ChatGPT
    利用シーン
    設計/アーキテクチャ設計

    言語別デザインパターンのサンプルコードを教えてもらう。

    今回はBuilder パターン

    質問例

    Builder パターンを以下の言語でそれぞれ作成して下さい。
    
    ・Java
    ・TypeScript
    ・Go
    ・Kotlin

    回答内容

    Builder パターンは、複雑なオブジェクトの構築を段階的に行うためのデザインパターンです。各言語での実装例を以下に示します。

    Javaの実装例

    TypeScriptの実装例

    Goの実装例

    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 クラスを通して制御しています。各言語の構文と特性に合わせて、適切な実装方法が選ばれています。

    リンクは準備中

    参照記事

    ChatGPTを最強の学習ツールにする方法 - Qiita

    こちらの記事は随時追加更新していきます記事の内容何かと話題のChatGPTですが、今回はこのChatGPTをプログラミング学習として活用し、「最強の学習ツール」にしてしまおうという記事になります。内容を書き換えれば、英語学習などにも置き換えることができます。筆者...

    qiita.com

    ChatGPTを最強の学習ツールにする方法 - Qiita

    TIS株式会社

    サイトのご利用について

    情報セキュリティ方針

    お問い合わせ・フィードバック

    Copyright 2024 TIS Inc.

    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);
            }
        }
    }
    
    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);
        }
    }
    
    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
    }