架构师训练营 - 第二周架构师实现自己架构的主要手段
一. 智慧老师的架构师第一步经历分享总结
智慧老师分享自己早期工作中第一次做架构师角色的经历,本来老师在团队中职位只是一个普通的开发人员,但是智慧老师发现了问题,并主动向领导提出来,获得了一次尝试设计架构的机会,老师把握机会顶住压力,作出了架构设计。并通过评审。成功的在那次项目中担任了架构师的角色。
最后老师总结到,要想成为架构师,必须要有一种破局的能力。要敢于作出一般人不敢做的事情。
听了智慧老师的经历,仔细思考了一下,什么是破局能力:
敢于做出打破当前局面的事情,作出非常的决定。
顽强的抗压能力,逆流而上,达到突破。
一定的技术能力基础支撑。
二 软件框架的基本概念,框架与工具的区别
框架是用来实现某一应用的结构性的程序,是对某一类架构方案可复用的设计与实现
如同框架结构的大厦的框架
简化应用开发者的工作
实现多种设计模式,是应用开发者不需要会太大的力气,就能设计出结构良好的程序来
工具是实现某些特定功能的类或类的集合。
框架与工具的本质区别:
框架是不需要使用者去主动调用框架的代码。
工具一般是一些有特殊功能的类,需要开发者去主动调用工具完成特定的功能。
三. 面向对象设计目的与原则
1 面向对象设计的目的
强内聚、低耦合、从而使系统
易扩展 - 易与增加新的功能
更强壮 - 不容易被粗心的程序员破坏
可移植 - 能够在多样的环境下运行
更简单 - 容易理解、容易维护
与之相反,一个“不好的”软件会有以下“臭味”:
僵硬 - 不易改变。
脆弱 - 只想改A,结果B被意外的破坏
不可移植 - 不能适应环境的变化
导致误用的陷阱 - 做错误的是比做正确的是更容易,引诱程序员破坏原有的设计
晦涩 - 代码难以理解
过渡设计、copy-paste 代码
2 面向对象设计原则(SOLID)
1. 开闭原则(OCP)
OCP - Open/Close Principle
对扩展开放
对更改封闭
如何做到? 运用抽象
2. 依赖倒置原则(DIP)
DIP - Dependency Inversion Principle
高层模块不依赖低层模块,二是大家都依赖于抽象;
抽象不能依赖实现,二是实现依赖抽象
如何做到? 高层定义接口,低层去实现 。而不是高层调用低层定义的接口。
3. 里氏替换原则(LSP)
里氏替换原则说明了 一个正确的继承应该符合什么样的原则。
子类型必须能够替换掉他们的基类型,使用基类的地方一定可以使用子类。
4. 单一职责原则(SRP)
SRP - Single Responsibility Principle
一个类,只能有一个引起它变化的原因(一个职责就是一个变化的原因)
5. 接口隔离原则(ISP)
ISP - Interface Segregation Principle
不应该强迫客户程序依赖他们不需要的方法
单一职责和接口隔离的关系
都与提升程序"内聚性"有关
单一职责指出应该如何设计一个类
接口隔离指出应该如何设计一个接口
评论