23种设计模式的解析与Cpp实现