什么是优雅的代码?我的答案是简洁。当代码开始错综复杂的时候,设计模式就是一个很好的工具来对代码进行整理。
什么是设计模式
从本科开始,老师便时不时的会提到设计模式,听起来是个很高端的词,一直不是很能理解,这次读过了《HEAD FIRST设计模式》这本书,结合之前度过的《重构》和《代码整洁之道》,感觉对设计模式有了一点新的理解。
首先我想先谈谈什么是设计模式,设计模式可以看作是一种前人的经验总结。代码的混乱总是有一定的相似性,例如不断重复的代码便是一种混乱。在这种混乱之下,便有人找出一些很通用的方法来处理这种混乱,使代码变得整洁,这些方法就是设计模式。
因此我们可以将设计模式看作是一种工具,就如同很多工具一样,设计模式也有自己的使用方式,如果我们想要很好的使用设计模式,最好的方法便是将所有的设计模式都装在脑子里,当我们遇到某些情形时,相应的设计模式便会自己浮现出来,之后我们只需要将代码进行相应的重构。
设计模式的意义
通过这本书,我详细的了解了11种设计模式,在读的时候我总在思考为什么要这样实现,经常看完实现之后才能恍然大悟,然后理清楚中间的层级结构,才能体会出这样实现的意义。首先我想先快速的串一些设计模式:
- 策略模式:封装可互换的行为
- 状态模式:封装状态由于动作引起的行为
- 命令模式:封装请求
- 组合模式:统一对象集合和单个对象的处理方式
- 工厂方法模式:封装对象的创建
通过简短地总结就可以看出这几个策略的目的都是在于封装变化,通过接口来隐藏隐藏具体实现,以此来实现将客户与具体类的实现之间进行解耦。很多基础设计模式的最终目标就是解耦,将应用与具体实现进行解耦可以让代码具有更高的可拓展性和灵活性,也会让代码结构更加优雅简洁。设计模式的意义,就如同标题所说,就是让代码更加优雅简洁。
如何使用设计模式
我觉得很重要的一点是,首先我们要知道很多设计模式,然后当我们遇到问题的时候,这些设计模式就会自然的跑出来帮我们解决问题。不能为了使用设计模式而将设计模式洒满这个项目,设计模式并不是“银弹”,不能帮我们解决所有的问题,而且每个设计模式也都会有自己相应的缺点,这些缺点有可能会让代码变的更加混乱。例如状态模式,很好的封装了状态中的行为,将行为的具体实现与客户代码解耦,但是随之而来的就是增加了很多的类。设计模式存在的目的就是简洁,所以如果有更简洁的方式,大胆的使用它,将设计模式抛到一边。
当我们需要改进代码时,设计模式一定不是唯一的选择,但是却是工具箱中一个很有力的工具,好好的利用它,会给编程带来不一样的体验。