design pattern quick reference quick checks for the code singleton pattern prototype pattern factory pattern builder pattern adapter pattern decorator pattern facade pattern proxy pattern chain of responsibility pattern composite command pattern interpreter pattern iterator pattern observer pattern state pattern strategy pattern (cwessel badenhorst badenhorstpractical python design patterns