**架构即软件架构,**是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件体系结构是构建计算机软件实践的基础,简单来说,软件架构是一个系统的草图,是一种设计方案,将客户的不同需求抽象成为抽象组件,各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。
二、框架
**框架即软件框架,**通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
框架的功能类似于基础设施,与具体的软件应用无关,是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。
简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。
三、设计模式
设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案,设计模式特指软件“设计”层次上的问题。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它强调的是一个设计问题的解决方法。
面向对象设计模式通常以类别或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。
软件架构 :一般场景下拥有设计的选择权
设计模式 :选择后特定场景下的最佳实践
这么说吧
没有架构,楼很难搭起来,或者很容易塌
但没有设计模式,没有大事,顶多工人难受些
良好的架构对产品系统很有用
良好的模式对码农很有用
面向对象不同而不同。
——————进阶——————
面对客户哔哔时,我们用需求分析架构。
面对整个软件或系统时,我们谈论架构分析。
面对软件模块设计时,我们使用设计模式。用实际项目去理解:
你从事任何一个比较大型的项目,这个项目一定有它通用或独特的架构。
这里面可能包含了诺干设计模式。
总之你光会设计模式,还是搞不定软件架构的,软件架构可不像设计模式那样能编出书,统一成23种基本的设计模式。软件架构是依赖于具体软件具体领域的特性的。
面对模块实现时,我们应用特定编程语言的特性。
——————进阶——————
如果你能根据需求用编程语言倒逼一步步上去,实现语言的高效与功能的拓展。
——————进阶——————
如果你能根据需求直接倒逼到需要选择特定特点的特定语言,就可以称的上集大成者了,因为你能体察到每个层级的现有设计限制。
——————进阶——————
学会妥协,trade off.
用实际项目去理解:
你从事任何一个比较大型的项目,这个项目一定有它通用或独特的架构。
这里面可能包含了诺干设计模式。
总之你光会设计模式,还是搞不定软件架构的,软件架构可不像设计模式那样能编出书,统一成23种基本的设计模式。软件架构是依赖于具体软件具体领域的特性的。
设计模式是从coding层面提炼出来的一种总结,用来使得代码的耦合度达到最大限度的分离,从而可以使你的代码更好的被复用,更容易被替换,更好的拥抱需求的变化。
架构则是着眼于更全局的高度,包括硬件,操作系统,网络环境,包括从立项到维护之间的所有过程(需求,设计,编码,部署,维护,功能迭代等)。架构的责任是保证软件的可用性,可扩展性,可伸缩性,安全等等一系列的指标。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!