Implement Mediator Pattern to assist the decoupling of concepts

- lib/mediator
- test of mediator