Interpreterパターンを検索すると、四則演算をしているサンプルが多く見つかったので、それに倣いなるべくシンプルに加算をするコードを作成してみました。
// Interpreterパターン
// インタフェース
interface IExpression
{
int Interpret();
}
// 数値を表すクラス
class Number : IExpression
{
int _number = 0;
public Number(int number)
{
_number = number;
}
public int Interpret()
{
return _number;
}
}
// 加算を表すクラス
class Add : IExpression
{
IExpression _number1;
IExpression _number2;
public Add(IExpression number1, IExpression number2)
{
_number1 = number1;
_number2 = number2;
}
public int Interpret()
{
return _number1.Interpret() + _number2.Interpret();
}
}
public class Program()
{
// エントリーポイント
static void Main()
{
var result = new Add(new Number(3), new Number(2));
// 5 = 3 + 2
Console.WriteLine($"{result.Interpret()}");
}
}
こちらのサンプルコードを書いてみて、
5 = 3 + 2
というような計算を、Interpreterパターンを用いて
var result = new Add(new Number(3), new Number(2));
というふうにオブジェクトの組み合わせで表現できることだと思いました。
コメント