开放-封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。也就是对于扩展开放的,对于更改是封闭的。
学习设计模式的时候对这句话的记忆很深,而且“封装变化”这句话更是记忆深刻,但是也只是记忆深刻,这次做考试系统的时候是真的深刻体会到了。整个考试系统的变化点就是题型,不同的考试会有不同的题型,不同的题型需要不同的字段。这样我们就需要把题型的变化封装起来,当我们添加一个新的题型的时候,尽量不更改原来的系统。初步的设想是将不同的题型的封装到不同DLL文件里面,当需要添加一个题型的时候只需要导入一个DLL文件即可,而不影响其他部分。
以上是需求,我们采用的是策略模式+反射。将各种题型封装成DLL文件,这样就把变化封装起来。
下面看图看代码:
///
//