好的问题是学习的前提,首先明白以下几个问题:
1、为什么会有模式和框架?两者有何区别?
2、都有哪些模式和框架呢?
先来看第一个问题,为什么会有模式和框架?人和动物的区别是会不会制造和使用工具,注意,不光会使用,还要会制造(比如猿类也能使用工具但不会制造工具)。每天做重复的工作或者类似的工作,常常会熟能生巧,就是找到处理此类问题的较科学省力的方法,不会武功的人碰到打架只会乱打,而将打人的方法归纳总结出来就形成招式,不同的招式再整合起来就形成了一套武功。模式pattern就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,就是模式,类似于招式,而框架,framework就是一组组件构成的半成品,可以用来快速完成自己的系统。框架更像是一个汽车制造厂,有了造车厂,造汽车就比自己乱组装来得容易多了,同时框架能够很好的应对可能出现的各类问题,举个栗子,郭靖郭大侠最有名的武功(框架)降龙十八掌,基本上凭此就能走遍天下,实在不行还有九阴真经嘛。至于二者的区别,模式是小技巧,解决小问题,是战术,框架则是大智慧,解决大问题,是战略。所以为了效率,学习模式和框架,也为了不再浪费宝贵的时间和人生,学习模式和框架。
再来看第二个问题,都有哪些模式?常见的23种设计模式:单例、Builder、原型、工厂方法、抽象工厂、策略、状态、责任链、解释器、命令、观察者、备忘录、迭代器、模版方法、访问者、中介者、代理、组合、适配器、装饰、享元、外观、桥接等
很多可能没用过,但是把遇到的活学活用就行啦。
关于框架,不吹毛求疵,就列举见到的。比如,MVC、MVVC、MTV、CBD、ORM、MVP、MVVM。
1、MVC Model-View-Controller ,模型-视图-控制器,1970年又老外最先提出,最开始时时MVCE,E即Editor,因为那个时候计算机还是个只会显示一行行代码的命令机器,还没有GUI(Graphical User Interface,图形用户界面) 的概念。比如Android UI系统就用此类框架,MVC的角色看图就可以了。
2、MVVC
MVVC is a light multi-page and popular front frameworks supported web developing framework.
Model-View-ViewModel-Control ,更多请参考https://www.npmjs.com/package/mvvc
3、MTV
Model(模型) -- Templates(模版) --Views(视图)
Django是标准的MTV框架。
4、CBD
核心Core+行为Behavior+驱动Driver
ThinkPHP3.0版本引入了全新的CBD(核心Core+行为Behavior+驱动Driver)架构模式。
5、ORM
Object Relational Mapping
7、MVVM
Model-View-ViewModel
MVVM 与MVP非常相似,唯一的区别是View 和Model进行了双向绑定(data-binding),两者之间一方发生变化会反映到另一方上。MVP 中的View 更新需要通过Presenter,而MVVM则不需要。MVVM模式有点像ListView与Adapter、数据集的关系,这个Adapter就是ViewModel,与View 和Model进行了绑定。