c语言设计模式