golang架构设计开闭原则手写实现 golang架构设计开闭原则手写实现目录缘起开闭原则场景思路ICourse.goGolangCourse.goIDiscount.goDiscountedGolangCourse.goopen_close