设计模式的概念最早是由克⾥斯托弗·亚历⼭⼤在其著作《建筑模式语⾔》中提出,后来在无数工程师的添砖加瓦中,在软件工程领域发扬光大。设计模式可以说是一种开发设计的指导思想,帮助我们解决某一类特定的问题。
我们今天不考虑设计模式在程序中如何具体落地,我们换个角度思考,设计模式中六大设计原则,究竟是为了解决什么问题呢?
矛盾是事物发展的根本动力。 我们在软件开发过程中,不可避免的矛盾在于,随着需求的快速发展,我们的程序总是在不断变化,软件工程规模越来越大,如何在规模、复杂度不断提升的过程中,保障我们工程的质量和稳定性,是设计模式要解决的根本问题。
自然界中有一种植物,它能够快速适应环境的变化,具有快速生长的能力,它就是--竹子,我们以竹子的视角去思考下设计模式的六大原则。
开闭原则
随着竹子的生长,不断有新的竹节产生,新的竹节不会破坏原有的竹子结构。
单一职责原则
为了更高效地利用能力,竹子各个细胞进行了分化,产生了不同的分工。根部负责吸收营养,叶子负责光合作用。
迪米特原则(最小知道)
竹子各个层次部分通过简单的根茎进行连接,各个组成部分不会形成类似蜘蛛网的结构,根部不会直接关心叶子的生长情况。
依赖倒置原则
无论是在红土地,还是黄土地,只要有对应的氮磷钾等无机物,竹子就可以持续生长。竹子的生长只依赖抽象的营养物质,而不依赖具体的土壤情况。
接口隔离原则
竹子的节间分为细胞分裂区、细胞伸长区、次生壁增厚区。通过将节间生长的大接口拆分成多个接口,实现节间的分层接力生长。
里氏替换原则
不同品类的竹子种在相同的地方,虽然各个品类的具体生长情况存在差异,但是基本的生长功能保持一致。
总结来说,所谓的设计模式,就是想办法让我们系统中的对象更加简单,将可能发生变化的对象之间的联系抽象出来,减少复杂的耦合关系。