Builderパターンを使って簡単なアプリを作ってみた

builder-e2 プログラミング

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。ご了承ください。

デザインパターンの一つ、BuilderパターンをQtとC++を使って勉強してみました。

実際にアプリを作ってみることで、パターンの使い方を学びたいと思います。

Builderとは、建築者、建築業者を意味する

Builderパターンとは

Builderとは、建築者を意味します。なので、こちらのパターンは建築物を作る工程をイメージするとわかりやすいです。

例えば一軒家を建てる場合、建築工程などはある程度決まっています。

しかし、木の家、コンクリートの家、お菓子の家、など生成物はバリエーションのあるものを作りたいことがあるかもしれません。

このような、ある作業工程からさまざまなバリエーションの成果物を生成したい時にとても役立つパターンになります。

クラス図

builder-class-diagram
https://ja.wikipedia.org/wiki/Builder_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

一軒家の作業工程を持つのがDirectorクラス。

木の家、コンクリートの家、お菓子の家などはBuilderクラスを継承したConcreteBuilderクラスで実装します。

こうすることで、DirectorはいろんなバリエーションのBuilderクラスに適応でき、いろんなバリエーションの家を作り出すことができるのです。

作成したアプリ

生命体から、ネコや宇宙人を生成するアプリを作成しました。

しょうもないです。

コードと実行結果

builder
実行結果

ボタンを押すことで、ネコと宇宙人を作り出すようになっており、Builderパターンに倣うようにしました。

Directorは、生命体を作る工程を持っており、ConcreteBuilderはネコ、宇宙人の素材を持っています。

GitHub - jiji-thecat/dp-bridge
Contribute to jiji-thecat/dp-bridge development by creating an account on GitHub.

コードを分解

では、各クラスの説明をしていきます。

mainwindow.h / mainwindow.cpp

ここでは、UI部分の実装やロジックを入れています。

director.h / director.cpp

目や鼻や耳などをつける関数をBuilderクラスから呼び出し、assemble関数で生命体を生成する作業を実行します。

builder.h / builder.cpp

ネコや宇宙人クラスなどが継承する抽象クラスになります。

このクラスを継承するクラスは、目や鼻を付与する関数を実装しなくてはいけません。

creature.h / creature.cpp

生命体のクラスになります。目や鼻などのメンバ変数を持ちます。

cat-builder.h / cat-builder.cpp

ネコを生成するクラスになります。

どういう時に使うのか?

作業工程が決まっているが、いろんなバリエーションの生成を行いたい時に使えるのかな〜・・・

ロジックはわかるけど、いざどういうときに使用するかがやっぱりまだ難しい

まとめ

Builderパターンのアプリを作成してまとめてみました。

作業工程が決まっているものにたいして、いろいろなバリエーションのものを生成したいときなどは、このパターンを参考にしたいと思います。

参考サイト

にほんブログ村に参加しております!よろしければクリックお願いします 🙂

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

タイトルとURLをコピーしました