软件架构是对系统的高层视角,或者是对系统的抽象。它关注的是某些对完成这个系统有最大帮助的方面,例如:可用性,稳定性以及灵活性。同时,架构对如何达到这些目的给出了指导和约束。前端
软件架构是软件系统的一张蓝图。数据库
架构是和平台无关的,可确保开发的过程在必定的限制或者规则下进行。设计模式
架构和设计时两个不一样的概念,它们也出如今不一样的阶段,当软件系统的架构肯定以后,设计就开始了。安全
- 结构是与系统的业务需求紧密联系。
- 设计时与系统的实现相关的。
- 设计将架构所关注的那些高层抽象的需求与具体的技术实现联系起来。
Tier是物理分层,Layer是逻辑分层数据结构
咱们可能会把架构和设计固化在可重用的代码中,以便在建立其余新的项目时重复使用。那么咱们此时须要的就是一个框架:它以编码的方式实现了架构和设计,更利于提升重用性和生产效率。架构
在软件世界中,将架构和设计写到框架里面是下降开销、提升重用性的最好方法。因此能够把框架当作是架构和设计的一种积累,经历多个项目的开发,不断的修改和完善,最后使得整个框架在性能、伸缩性、安全性等方面都能知足需求。app
模式是经验的重用,模式对软件开发过程当中出现的一些问题给出了比较好的解决方案。框架
1、建立型模式:用来建立对象的模式,抽象了实例化的过程。性能
- 单件模式(单例模式)
- 抽象工厂模式
- 工厂方法模式
- 生成器模式
- 原型模式
2、结构型模式:此模式讨论的是类和对象的结构,它采用继承机制来组合接口或者实现,或者经过组合一些对象,来实现新的功能。编码
- 适配器模式
- 桥接模式
- 装饰着模式
- 组合模式
- 门面模式
- 享元模式
- 代理模式
3、行为型模式:负责处理对象之间的信息交互和职责分配
- 职责链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模板方法模式
- 访问者模式
1、分层模式
- 无须过多的了解其余层次,能够直接将某层做为一个有机总体来理解。
- 能够替换某层的实现,并不会影响其余层,只要替换先后提供的服务相同便可
- 能够将层次间的依赖性减小到最低
- 分层有利于标准化工做
2、业务逻辑设计模式
- 事务脚本模式(Transaction Script):以线性或者面向过程的方式来组织业务逻辑,将每个业务流程都包装为一个大的、粗粒度的方法。
- 活动记录(Active Record):活动记录,以底层的数据结构为基础来组织业务逻辑,每一个对象都表明了表中一行记录
- 领域模型(Domain Model):领域模型是对现实中的领域对象所进行的抽象和提炼,每一个领域对象包含本身的数据和行为。
3、对象关系映射
- 工做单元(Unit Of Work):确保全部相关的对象的改变在一个业务事务里面,同时确保在提交状态的时候维护业务对象的状态一致性,要么一块儿成功,要么一块儿失败。
- 资源库(Repository):用来协调领域和数据映射层,使得领域成彻底不关注数据的存取,隐藏了后台的全部机制。
- 数据映射(DataMapper):指把原生的数据取出来复制给一个对象,而后把对象的数据再次转换保存为原生的数据的过程。
- 标识映射(Identity Map):经过在映射中保存每一个已经加载的对象,确保每一个对象只加载一次,当要访问对象的时候,经过映射来查找它们。
- 延时加载(Lazy Load):只在真正须要这个数据的时候才去加载。
- 查询对象(Query Object):它可以用业务对象的语言而不是数据库语言来描述查询,这就意味着,咱们在构建查询的时候,没必要在乎数据库中表名或者列名。
4、表现模式
- Model View Presenter (MVP)模式
- Model View Controller (MVC)模式
- Model View View Model(MVVM)模式
- Front Controller(前端控制器)模式
- Page Controller(页面控制器)模式
5、基本模式
- Layer Supertype(层超类型),让某一个类型充当一层全部类型的超类,在某一层中,全部的对象或者不少对象都具备相同的方法。