架构师训练营总结 -2
日期
0613
总结开始
软件设计的核心:抽象
面向对象的特点-封装、继承和多态,核心就是多态(父类指针指向子类对象),个人感觉大部分设计模式都是在利用面向对象的多态特性
框架概念:用来实现某一类应用的结构性的程序,是对某一类架构方案可复用的设计与实现
(架构师:别人的代码都是基于你的代码来写,处于技术核心地位^_^老师重复这句话很多遍)
架构的作用:简化开发人员的工作、约束开发人员代码规范
框架与工具的区别
框架:别人写的代码由框架调用(依赖反转),别人写的代码规范由框架约束
工具:别人调用的代码
好的软件特点:【高内聚、低耦合】
易扩展:容易增加新的功能
更强壮:不容易被粗心的同学破坏
可移植:能够在多样的环境下运行
更简单:容易理解、容易维护
不好的软件特点:
僵化:耦合性强、牵一发动全身
脆弱性:对系统改动会导致与此无关的许多地方出问题
牢固:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件
设计中包含了对其他系统有用的部分,而把这些部分从系统中剥离出来代价(工作量和风险)很大
粘滞性:明知是不好的实现,但无法改动
不必要的复杂:过度设计
不必要的重复:copy、cut、paste
软件设计的原则(自己详细了解一下这些原则)
SOLID
KISS
YAGNI
DRY
LoD
软件设计原则--开闭原则(OCP):对修改关闭,对扩展开放
通过类图来比较一下策略模式、适配器模式、观察者模式
重点在理解
软件设计原则--依赖倒置原则(DIP)
描述:高层不依赖于低层,而是依赖于抽象;抽象不依赖于实现,而是实现依赖于抽象。
理解:我(低层)定义你(高层)调用 -》我(高层)定义你(低层)实现
软件设计原则--里氏替换原则(LSP)
描述:里氏替换原则主要是对继承的规范,子类型必须能替换他们的基类型
理解:LSP是要求对父类要正确的抽象,不完美的继承关系,个人理解是父类抽象的不够;
无法符合LSP原则咋办?答:用组合替代继承,多用组合,少用继承
软件设计原则--单一职责原则(SRP)
描述:又称为内聚性原则,一个类只能有一个引起它变化的原因
理解:SRP是对模块或类功能设计的规范,一个模块尽可能只做一件事。多个功能设计在一个模块内,会增加此模块的耦合性,低内聚,会比较脆弱。
有一种说法:一个类文件打开以后,不能超过一屏,一屏之内能看清类的所有代码
软件设计原则--接口分离原则(ISP)
描述:不强迫用户依赖他们不需要的方法,用户不需要的方法也不要暴露给他们
软件设计的核心:抽象
总结结束
版权声明: 本文为 InfoQ 作者【River Tree】的原创文章。
原文链接:【http://xie.infoq.cn/article/8c84101a32b626d81eec44703】。文章转载请联系作者。
评论