2023-11-13
我花了一个星期左右,读完了王校长的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=贯穿设计模式》,在此谈谈我的读后感吧。我读这本书时最大的感受就是“代码还能这样写?”。在没读这本书之前,我对设计模式进行过几次的学习,一次是在b站上看韩顺平老师的设计模式视频(19年的视频,33小时),一次是在最近我备考软考时,我笼统地过了一遍设计模式。我对设计模式的实战只有在星球项目里进行过。每一次做星球项目时,能用到设计模式,都让我觉得很兴奋,设计模式的思想,设计模式的实现代码真的太吸引我了。我做过的项目也就只有B站上的热门项目,星球上的全部项目,还有几个自己研究的小项目,但很无奈,由于我的经验不足,在这些项目中如何使用设计模式?一直是我的痛点,我一直有一种感觉就是想用,但不用哪个模式?知道用哪个模式了,却不知道怎么写?即使我每次跟着视频来敲设计模式的代码,即使我看了一次又一次的代码,即使我对代码流程进行一次又一次的debug,但实战的时候,我还是无从下手。我学习设计模式的示例代码都是在main函数中使用的,学的时候就感觉这玩意儿咋用到项目里?像什么造房子、生产披萨、歌手投票、遥控器,这样的代码,项目中能用到吗?
我试过去b站上查找设计模式的实战视频,要么视频很短,要么内容很简单,而且好像没有一个视频能把大部分的设计模式都用到实战中。于是我决定看一些关于设计模式的实战书籍。得益于群上的xdm,我下单了王校长的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=贯穿设计模式》。我一个设计模式菜鸟去读这本书,我没感觉到任何来自代码读不懂的压力,读这本书时,我都很期待下一页会是什么内容,下一个设计模式会怎么用。这本书300多页,涵盖20种设计模式的实战,我都跟着书上的代码去写。书中的代码含义并不难,读起来很轻松。我认为读这本书就是要品,品这个类为什么要这么设计,品这个方法为什么要这样调用。我经验不够,前几章还有点懵懵懂懂,但坚持看下来,不知道在第几章时,我意外的发现,好像我的脑子里有想法了,看着设计模式的通用类图能猜到实战中怎么“套”,要怎么变形。在此之前,设计模式的通用类图在我的认知中时一成不变的,我觉得要用这个模式的话,就通用类图上“套”就完了。但正如书中说的,没有绝对的通用类图,要因地制宜。我之前没有悟到这一点,因此代价就是不知道怎么用设计模式。
在备考软考时,我自己总结了一次设计模式的意图和适用性并把他们背下来了,但也只是死记硬背,有些内容背下来了但是不理解。在读这本书时,我背过的内容,和书中的实战对应上了,有一种豁然开朗的感觉。读完这本书,我对怎么用设计模式有了一点自己的收获。例如:一个模块中如果支持多个第三方服务,那么可以考虑桥接模式、策略模式;如果要根据某个条件来改变对象的行为,那么可以考虑策略模式和状态模式(如果这个条件不发生频繁的变化,那就考虑策略模式,如果这个条件经常变化,那就考虑状态模式。对应这两模式中的“场景”和“状态”的概念);树形结构考虑组合模式 访问中模式;学会了apollo的基本使用,学到了责任链模式 配置中心的搭配使用...除此之外,原来我曾经有接触过设计模式,我做过的聊天室,就是一个中介者模式的典型案例。
在读这本书的时候,我有一些自己的疑惑,例如:
支付宝支付的回调接口能用localhost,码云登陆的回调接口能用localhost,那微信支付呢?微信登陆呢?支付宝登陆呢?是不是也能用localhost,那开发时就不需要再搞什么内网穿透了(如果真的能,那我一定会想办法把这些功能加到我的毕设里)。
策略模式和状态模式感觉是一样的,那为什么还要分成两种模式?我感觉是宏观上可以使用策略模式,微观上可以使用状态模式。
装饰器模式和代理模式的区别?我感觉装饰器模式动态地为对象添加职责和代理模式对类进行动态代理,然后增强方法有点类似,感觉都是加功能。
Spring的aop为什么用代理模式而不用装饰器模式?
建造者模式中,能不能也给product角色也定义一个抽象父类,进行代码复用?
代理模式里builder,一个无状态的角色总是用new来创建,是否不太优雅?
中介者模式里,mediator做成了全局中介者,而记录同事类的map是static的,为什么在orderService中还要注入mediator,并且通过对象.属性的方式来调用map?
至此,再次真心向大家推荐这本书(如果你和我一样,之前没接触过王校长的书,那么相信我,你看完这本书之后一定会爱上读王校长的书。我已经开始期待读校长的下一本书了),也希望大家能解答一下我的疑惑。
#阅读#
34
0
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
