常用设计模式
围绕三个关键问题:如何创建对象,如何组合对象,以及如何处理对象之间的动态通信和职责分配。
软件设计原则
五种软件设计基本原则 SOLID

第一个单一职责,简单来说就是不要做多余的事,尽可能实现“高内聚,低耦合”。在设计类的时候要尽量缩小粒度,功能明确单一,不要设计大而全的类。
第二个是开闭原则,通常的表述是“对扩展开放,对修改封闭”但没说具体怎么做, 跟没说一样🐶。
不过可以反过来理解这个原则,在设计类的时候问一下自己,这个类是否封装的足够好,能不能不修 改源码就增加新功能?,如果答案是否定的那么就违反了开闭原则。<br /> 开闭原则的核心是做好封装,隐藏内部的具体实现接口,然后开放足够的接口,这样客户代码就可以 通过接口去扩展功能,而不必侵入类的内部。
第三个里氏替换原则,意思是子类必须能够完全替代父类。
第四个是接口隔离原则,和单一职责有点像,侧重点是对外的接口,而不是内部的功能,目标是尽量简化给外界调用的接口,避免写出大而不当的面条类。具体使用比如适配器来转换接口,使用装饰模式来增加接口,使用外观来简化复杂系统的接口。
第五个是依赖反转原则,字面意思比较晦涩,其核心是上层要避免依赖下层的实现细节,下层反过来要用来上层的抽象定义,说白了就是“解耦了”。单从解耦的角度来理解,存在上下级耐用关系的设计模式都算是以来反转,比如抽象工厂,桥接,适配器等。
设计原则是在设计模式之上更高层面的指导思想,适用性强,但可操作性弱,须在实践中体会。
除了SOLID 原则外,还有两个比较有用,DRY(Don’t repeat yourself)、KISS(keep it simple stupid)。
它们的含义都是让代码尽量保持简单,简洁,避免重复的代码,比如在C++中用宏代替字面值,用lambda表达式来定义函数,使用容器算法等。
