ソフトウェアのデザインパターンを読み進めている。
今回はBuilderパターンの理解を進めた。書籍のP107を開くと以下のクラス図が載っている。

これの理解を深めるために簡単なコードをC#で書いた。文字列をコンソール画面に出すのみだ。このデザインパターンを深堀するならConcreteBuilder1, ConcreteBuilder2, ConcreteBuilder3といったクラス構成にしたほうがいいのかもしれない。
ただ、今日は致し方ない。ニュースによれば都心では最高気温36度を超えたとある。それだけ暑ければ思考が深くならなくても致し方がない。別の機会に試みることにしたい。
話を戻す。ひとまずシンプルな構成で試した。
- Program.cs
- Director.cs
- IBuilder.cs
- ConcreteBuilder.cs
Directorクラスのインスタンスを生成する際にIBuilderを実装したConcreteBuilderをコンストラクタの引数に渡す点が1点目のポイントで、DirectorはIBuilderのインターフェースに従ってConstructメソッドを実装しているのが2点目のポイントだ。
Program.cs
1
2
3
4
5
6
|
using Builder;
var builder = new ConcreteBuilder();
var director = new Director(builder);
director.Construct();
Console.WriteLine(builder.Result);
|
Director.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Builder
{
public class Director
{
private IBuilder builder;
public Director(IBuilder builder)
{
this.builder = builder;
}
public void Construct()
{
this.builder.BuildPartA();
this.builder.BuildPartB();
this.builder.BuildPartC();
}
}
}
|
IBuilder.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Builder
{
public interface IBuilder
{
public void BuildPartA();
public void BuildPartB();
public void BuildPartC();
}
}
|
ConcreteBuilder.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Builder
{
public class ConcreteBuilder : IBuilder
{
public string Result { get; private set; } = string.Empty;
public void BuildPartA()
{
this.Result += "BuildPartA\n";
}
public void BuildPartB()
{
this.Result += "BuildPartB\n";
}
public void BuildPartC()
{
this.Result += "BuildPartC\n";
}
}
}
|
それにしても今日は本当に暑い。基本的に家の中に篭っていた。買い物は日中を避けたが暑かった。6月がこんなに暑いことあっただろうか。昼はとりあえず素麺を食べた。そしてとりあえず水回りの掃除をした。あと子どもの壊れた消防車を直した。これは大きい。長男はとても喜んでいた。すぐ壊しそうである。
さて、明日以降も暑いらしい。外に出たくない。