add Design Pattern singleton Observer Adapter