软件开发是一个实践行业,从面相过程到面相对象,从“什么都没有”到设计模式和设计原则,其实都是为了更好的“实践”。那“实践”是什么?“实践”的是工作的完成,任务的完成,而任务和工作是不断变化的,是多个的,所以一切的提出本质上都是为了适应变化,为了在变化后更快的完成工作。
在不同中寻找共同,即是抽象,在变化中寻找不变,即是模式,在模式中寻找相同,即是原则。
这一切都是在变中找不变,所以要理解问题,先要理解原因,即:我们为什么出发。然后再去学习方法,学习别人总结好的东西才能更好的理解。
设计原则有六点:
开闭原则:对修改关闭,对扩展开发
依赖倒置:依赖抽象,不依赖实现
接口隔离:使用多个接口,即让接口更加原子,让相同功能接口一个类,不要大而全
里氏替换:任何父类出现的地方,使用子类替换都能保证系统正常运行
合成复用:能用组合的不要使用继承
迪米特、最少知道原则:一个实体尽量少和其他模块发生关联
其实这些原则之间是有“互通”的,我觉得最大的原则是开闭原则,其他一切原则基本是这一原则的特例,都是为了实现尽量在出现变化时,让已有不变,让新增去适配这种变化,从而提高工作效率