我发现,设计模式的思想,还是能为代码的结构带来不少便利。
因为一个系统(或者模块),包含了很多功能(功能不是独立的,总会关联),而且系统是可拓展的(可以不断升级,甚至完全改变)。
在实现整体功能的时候,需要考虑可行性,结构合理清晰,逻辑简洁。。
设计,避免很多问题。比如代码复用,功能解耦,以及用奇思妙想来达到各段代码之间的配合无间,既能实现强大的功能,代码不多结构又不复杂。
1、让功能可实现
基本功能是必须可以实现的。写一个系统,如果没有规划,直接有什么需求就写什么,这样代码会非常繁琐和混合,甚至导致最后每个功能点都要独立写一段代码。
在为了实现某些功能时候,如果发现某几个功能点之间有矛盾,或者说整个结构看起来臃肿,或者说为了实现功能要写很多代码,代码的逻辑非常复杂混乱,这时候使用一些设计的思想非常必要,如何统筹整个结构,是要给代码分层次还是怎么规划功能点,让各个模块之间的关联有序整洁,代码更少,却能实现更多的功能。
2、让代码更加简便
如果只是实现一个简单功能,怎么设计写出来的代码都差不多。但是如果是多个复杂的功能,实现的方式就有非常多种组合。最简单的就是按照功能分模块,按照需求逻辑原封不动的依次实现。但是很有可能吃力不讨好。想一下,把复用的代码块抽调出来共用很有必要,利用接口、组合、继承、封装等,或许并不需要每个功能点都全部敲一遍代码,或许能够通过分层次,通过各个模块之间的不同组合来实现各种功能,好比4个模块就能得到4+6+4+1=15种组合(其中有效组合将是一个功能点)。好的模式总是能够出乎意料,让人觉得原来这样子写两行代码全部功能就实现了。
3、让代码更加灵活可扩展
如果每个应用都是开发完后永久不变就像遥控器内置代码那样,那只需要考虑如何用最好的架构来设计这个应用就行了。但是变化可能在还没写完代码就来了!
设计最好能够适应变化。假设我们知道现在的系统将来很可能在哪些方面有扩展,首先是要能够扩展,我曾经有遇到过要为一个模块添加一个小功能,只能改变一个方法,但是这个模块的这个方法写死了,我不得不重新写n行代码作为铺垫,然后才能改这个方法(ps:或者重构原来的代码)。
如何设计才能尽可能地让各部分代码各司其职,而扩展的时候不用重写内部代码块,而是通过调用各部分代码的外部接口来实现即可。
在自己考虑如何利用模式来优化自己的代码结构的时候,首先可以借鉴JDK和一些已有的框架的模式,它们已经总结出一套如何简便代码和可行的方案,并从自己的实现中体现了,小到API的实现方式(有些API就是使用了设计模式的思想来实现的),大到各种框架的实现原理。
总的来说,无论使用什么模式,是为了代码易开发,易维护,易扩展,提高程序可读性和优化性能。
个人而言,就是为了写更精简的代码,却能做更多的事情,而且还能把事情做好,而且不仅现在好,以后更好,省心省力。