Design pattern and paradigm programming