design patter presented in o'reilly headfirst implement in ooerlang, erlang and java