设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案
维护性【可读性、规范性】
面向对象(OO)—> 功能模块【设计模式+算法(数据结构)】—> 框架(使用到多种设计模式)—> 架构(服务器集群)
设计模式包含了面向对象的精髓,“懂了设计模式,就懂了面向对象分析和设计(OOA/D)的精要”
七大原则
单一职责原则
一个类应该只负责一项原则
单一职责原则注意事项和细节:
1.降低类的复杂度
2.提高类的可读性、维护性
3.降低变更引起的风险
4.只有类中方法足够少,可以在方法级别保持单一原则
接口隔离原则
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上
里氏替换原则
在子类中尽量不要重写父类方法
继承让两个类的耦合性增强了,在恰当的情况下,可以通过聚合、组合、依赖来解决问题
依赖倒转原则
1.高层模块不应该依赖底层模块
2.抽象不应该依赖细节,细节应该依赖抽象
3.依赖倒转的中心思想是面向接口编程
4.设计理念:以抽象为基础搭建的架构比细节为基础的架构要稳定得多。在Java中,抽象指的是接口或抽象类,细节是具体的实现类
5.使用抽象类的目的是制定好规范,把任务交给实现类去完成
三种方式:通过接口传递实现依赖、通过构造方法传递依赖、通过setter方法传递
依赖倒转原则注意事项和细节:
1.底层模块尽量都要有抽象类和接口,或者二者都有,程序稳定性更好
2.变量的声明类型尽量是抽象类和接口,这样变量引用和实际对象间就存在一个缓冲层,利于程序扩展和优化
3.继承时遵循里式替换原则
开闭原则
编程中最基础最重要的设计原则
软件实体扩展开放、修改关闭
用抽象构建框架,用实现扩展细节
软件需要变化时,尽量扩展、减少修改
迪米特法则
类与类关系越密切,耦合度越大
又叫最少知道原则,一个类对自己依赖的类知道的越少越好
直接朋友:出现在成员变量、方法参数、方法返回值中的类
陌生的类最好不要以局部变量的形式出现在类的内部
避免出现非直接朋友关系的耦合
迪米特法则的核心:降低类的耦合
合成复用原则
尽量使用合成/聚合的方式,而不是使用继承
了解依赖、聚合、组合的区别