第三周总结
我们为什么要用设计模式?
答:日常生活中,我们总是会遇到各种各样的问题,有些问题会不断重复的出现在你的面前,这时候假如你知道怎么解决,那么问题迎刃而解。反过来,问题将困扰你。解决的方式可以是完全自创的,也可以是学习别人的经验,就我个人而言,往往会想想一些著作的经典语录,比如做人的模式,可以看看《智慧书》等。前人已经花了很长的时间(可能比你活的时间都长)去总结出一些特定场景,重复出现的问题的经典的解决方案,我们应该要站在巨人的肩膀上。这问题方在面向对象的软件开发领域,也是如此,在面向对象设计中,我们总是会重复的遇到相同的问题,这个时候就应该识别一下,能不能使用设计模式。因为设计模式能帮你给出最好的解决方案,能节省你大量的时间。
个人常用的设计模式有哪些?
答: 我个人经常用到的模式和场景包括:
策略模式:重构if..esle, swtich的时候使用
模板模式:处理重复代码的时候使用
工厂模式:不对外暴露构造方法的时候
代理模式:分静态和动态,一般动态代理用的比较多,AOP编程,对某个包下所有的类(controller)的请求参数和响应参数加日志
适配器模式:内部的domain对象,对外暴露成DTO的时候,有时候字段名称变一下(内部名称转换成系统间交互统一的名称)。
装饰器模式:有时候一些接口调用的时候,需要事先登录,这个时候我一般会用装饰器模式,在这些接口的外部自动添加一些登录、登出的逻辑,这样使用这些接口就不用关心登录状态了
门面模式:有时候,系统提供了大量琐碎的接口,使用不方便,会按照一定的功能分类,按功能规划为多个门面,接口集合暴露,一般用在暴露远程调用接口的时候。
常用框架的设计模式有哪些?
答:spring用到了大量的设计模式,前端页面框架经常用到mvc模式,mybatis的日志框架用到的是策略模式等,其实设计模式无处不在,如果有时间的话,我希望经常能看看框架的设计
要不要阅读源代码?
答:其实大多数人阅读源代码,都有点好高骛远的感觉,上来就要去阅读spring的实现代码。我感觉难度极大,收获不能保证,厉害的人收获很大,不厉害的人花费大量时间,没什么收获。个人目前只完整的读过mybatis的源代码,提高确实挺大的,但是也花费了巨大的时间。之后,我个人的计划是,自己去模仿的实现一些思想,比如IOC,我自己设计,自己实现会怎么写,模仿加比对,争取一个月完成一个思想的个人实现吧,这样搞挺适合我的反正,比上来就看人家的源代码好很多。
评论