Design Patterns Singleton Pattern Object Pool Pattern Flyweight Pattern Observer Pattern(With abstract classes and events both) Command Pattern