写在前面
在笔者的程序员从业过程中,经常碰到框架、设计模式、架构三个极易混淆的名词,本着打破沙锅问到底的原则,在此结合笔者个人经验,做一个汇总。
框架、设计模式、架构对比
框架
框架是具体的设计实现,比如,前端开发中,Vue(MVVM框架);java中,常听到的Spring(MVC框架)、Hibernate(ORM框架);python中,常听到的Django(MVT框架)、Sqlalchemy(ORM框架)等等,其特点是:
代码复用,需要具体的代码实现。框架实现的其中一个目的就是为了代码的复用,即将相同逻辑抽象成代码实现方法,以供使用;
通常以各类开发语言的库形式存在。如上列举的Vue、Spring、Hibernate、Django、Sqlalchemy等,皆为开发语言库;
设计模式
设计模式即为“代码组织方法的抽象”,如MVC(Model、View、Controller开发模式抽象)、ORM(对象关系映射,体现为数据模型及数据库操作方法的抽象)、工厂模式(实例初始化操作抽象)、观察者模式(对象事件监听抽象)等等,其特点是:
方法复用,无需代码实现。设计模式体现的是开发逻辑思路及思想的抽象,为指导代码开发的方法,是一种或若干设计方案。
通常不以具体代码、各开发语言库形式存在。
架构
架构即为软件开发中“服务或对象间关系的组织结构”,通常说到的B/S、C/S即为软件架构,以Java web开发为例,如通常提到的表现层、业务层、持久层分层关系及组织结构,其特点是:
既涵盖代码实现复用,也涵盖设计方法的复用。设计一个架构,涵盖了框架选取(甚至是自写框架)、设计方法定义等,是一个更宽泛的范围;
架构还需考量非技术性因素。设计架构时,需要根据实际使用场景,根据需求、框架评估整体实现的代价、性能、拓展能力等等。