入行至今,经历过服务端,前端,终端的开发,也用过若干种语言。我发现有些设计模式是语言特有的,或者比较细节,总之适用范围不广泛;而另一些更高层面的设计模式,则具有更强的通用性。比如最近体会比较深的mvc和三层分离的思想
只要涉及到界面的开发,mvc的思想总适用。视图决定界面的模板,其中的数据来源于模型,控制器起到居中调度的作用。我认为,很多情况下控制器扮演的都是转换模型的角色。视图上展现的模型一般称为VO,而持久化的数据一般称为PO,控制器从数据源中读出PO,然后通过业务逻辑和组织,形成VO。反之,用户对VO的操作,也经过控制器组织转化以后,形成PO并持久化。核心的思想,就是分离界面和业务逻辑
三层分离的思想也很通用,最常见的java ssh框架,通常分为action,service,dao层。最近基于angular开发单页面应用,也是把业务逻辑和数据访问的代码分离,这样可以很容易地在数据源之间切换(web sql,sqlite等)