Basic Design Patterns In Programming