1 SRP(单一职责原则)
这个原则看起来很简单,就是说一个类只能承担一个职责。
但这里有一个关键:“职责”是如何理解的?
按照汉语的理解,职责其实分为两部分:“职”和“责”。“职”就是这个类是什么,而“责”就是这个类要干什么。
举个例子来说:Door是一个对象,那么它的“职”就是门,“责”就是“开门、关门”等;而Lock的“职”就是锁,“责”就是“上锁、开锁”。如果设计的时候Door同时具有锁的职责,那么Door就违反了SRP原则。
2 OCP(开闭原则)
相信这是大家见得最多的原则,而且很多人都是这么解释的“对扩展开放、对修改封闭”,更加有人总结为“不修改代码增加新的功能”!
太神奇了,不修改代码增加新的功能!但我不免疑惑:不修改代码怎么增加新的功能呢?难道代码会像生物一样,基因变异?
仔细研究过后才发现,原来是这些总结的人误导了我,根本不是什么“不修改代码增加新的功能”,也不是那个省略了主语的“对扩展开放,对修改封闭”,而是“被调用者开放扩展,调用者封闭修改”
还是举门的例子:Door对象是被其它对象例如人People调用,那么Door就是被调用者,People就是调用者。Door对象可以扩展为“防盗门”、“防火门”、“逃生门”等,但People在调用的时候不需要关注具体是什么门,只需要调用这些门公共的“开门、关门”等操作即可。