一、分而治之思想
什么是分而治之?首先想到的是一种算法的思想。当我们遇到一个复杂的问题,可以把它分成两个或多个更小的问题,然后分别解决每个小问题,最后把各小问题的解答组合起来,即可得到原问题的解答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决。拿快速排序来举个小例子,给出一组无序的数据序列data(7, 8, 6, 10, 2),进行升序排序。我们第一次排序可以把 data 划分成两边,左边的数比最中间的小,右边的数比最中间的大,现在的为 data(2, 6, 8, 10, 7),以 8 分割线,把左右两边的序列进行同样的排序,最终整个序列就有序了。
二、软件工程中的分而治之
- 分而治之思想运用在软件工程中也是可以的。在一个复杂的项目中,有很多功能,不可能全部交给一个程序员来实现的。我们可以根据模块来划分,将需求交给不同的人来实现,最后把这些模块聚合在一起,项目也就实现了。例如我们开发项目使用的 MVC 模式,即 Model - View - Controller,将一个项目划分为三层,每一层负责实现特定的功能。每层负责的功能如下图:
可以发现在将项目分层了以后,我们只要约定好对应的接口,就可以把这三层分别交给不同的程序员去实现。MVC 开发模式三层独立,每层的变动都不用去改变另外两层,降低了耦合度,实现了代码重用,具有很强的灵活性。因此分而治之的思想是值得好好体会的