用于把抽象化与实现化解耦使得二者可以独立变化 https://github.com/wandergis/Javascript-design-pattern-study/blob/master/%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F.md