🐥
C 言語で Null Object パターン
Null Object パターン とは
デザインパターンの 1 つです。 Null Object パターンの意味は以下 2 つあるようです
- NULL のこと。何も刺していないオブジェクトのこと。
- 何もしないオブジェクトのこと
ググると後者の実装のことを言ってることが多いようです。前者は C 言語においてはまさに NULL のことですが、前者の意味で Null Object パターンを実装している事例は見かけませんでした。
実装
ここでは後者の意味の Null Object パターンを C 言語で実装してみました。
#include <stdio.h>
typedef void (*message)(void);
void hello_message(void){ puts("hello"); }
void null_message(void){ ; }
message get_message(int n)
{
if(n){ return hello_message; }
else { return null_message; }
}
int main(int ac, char** av)
{
get_message(1)();
get_message(0)();
return 0;
}
C 言語には継承は無いので何もしない処理を実装しただけです。関数ポインタとして実装してしまえばインターフェースを統一するだけで汎用的に使えます。 C 言語で実装する意味はあるのかというとよく分かりませんが。
コンパイルして
% gcc nullobject.c
実行します。
% ./a.exe
hello
Discussion