java常用的二十三种设计模式简单介绍,描述这些设计模式的适用场景