为什么要学习设计模式?可以在项目设计研发是有理有据,游刃有余,吹牛有依据
所有的设计模式离不开面向对象基础,面向对象是根,设计原则是树干,设计模式是树枝嫩叶;
SOLID原则-SRP单一职责原则
定义,一个类或者模块只负责完成一个职责;
如何判断类的职责是否足够单一?
- 类中的代码行数、函数或者属性过多
- 一个类代码行数最好不能超过200行;
- 函数个数及属性个数最好不要超过10个;
- 类依赖的其他类过多,或者依赖类的其他类过多;
- 私有方法过多;
- 比较难给类起个合适的名字;
- 类中大量的方法都是集中炒作类中的某几个属性;
SOLID原则-OCP开闭原则
定义,对扩展开放,对修改关闭;
最常用来提高代码扩展性的方法有:
- 多态
- 依赖注入
- 基于接口而非实现编程
- 装饰器模式
- 策略模式
- 模版模式
- 职责链模式
- 状态模式
SOLID原则-LSP里氏替换原则
定义,子类对象能够替换程序中父类对象出现的任务地方,并且保证原来的程序逻辑行为不变及正确性不被破坏;
跟多态很像,有什么区别呢?
关注的角度不同,多态是面向对象编程的一大特性,是一种代码实现的思路,而里式替换式异种骨设计原则,
哪些代码明显违背里氏替换原则?
- 子类违背父类声明要实现的功能,比如必须跟父类的陪许方式的改变
- 子类违背父类的对输入、输出、异常的约定
- 子类违背了父类主食中所罗列的任务特殊说明
SOLID原则-LSP接口隔离原则
定义,接口的调用这或使用者不应该被强迫依赖他不需要的接口
接口是指哪些?
- 一组api接口集合,设计微服务接口是将不需要的部分隔离出来
- 单个api接口或函数,调用函数中部分功能,需要拆分函数为更细粒度
- 面向对象中的接口概念,接口的设计尽量单一
SOLID原则-DIP依赖倒置原则
控制反转IOC
控制反转并不是一种具体的实现技巧,而是一个比较笼统的设计思想,一般涌来指导框架层面的设计,比如springioc容器就是ioc设计思想的实现,
这里的“控制”指的是对程序流程的控制,而“反转”指的是在没有使用框架之前,程序员自己控制程序的执行,在使用框架后执行流程交给框架来控制;比如交给spring ioc容器 实例化对象的流程,不在人工执行控制;
依赖注入DI
跟控制反转相反,依赖注入是一种具体的编程技巧,一句话概括就是,不通过new()的方式在类内部创建以来对象,而是将依赖类对象在外部创建好之后通过构造函数、函数参数等方式传递(注入)给类使用;
依赖注入框架,spring框架的控制反转主要通过依赖注入来实现的;
依赖反转原则DIP(依赖倒置原则)
高层模块不依赖低层模块,他们共同依赖同一个抽象,抽象不要依赖具体的实现细节,具体实现细节依赖抽象;
DRY 原则-不要重复代码
违反DRY原则
- 实现逻辑重复
- 功能语义重复
- 代码执行重复
KISS原则-尽量保持简单
如何写出kiss原则代码?
- 不要使用同伴不懂的技术
- 不要重复造轮子
- 不要过度优化
YAGIN原则-不要过度设计
过度设计没有意义,
LOD原则-高内聚低耦合
定义,不该有直接依赖关系的类之间不哟啊有依赖;有依赖关系的类之间,尽量只依赖必要的接口;
高内聚,类本身的设计
低耦合,类与类之间依赖的关系的设计
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END