什么是「设计模式」?

很多人应该听说过设计模式(Design pattern),或多或少地看到或使用了设计模式,但实际上在开发过程中总是有一种零食和缺乏力量的感觉。这一定是对设计模式的理解有一点偏差或不够深入。更不用说特定的模式了,首先看看什么是设计模式了?什么是设计模式?

设计模式是一套代码设计「经验的总结」。项目中「合理的」可以使用设计模式「巧妙地解决许多问题」。

总结经验:抱着「代码虐待了我几千次,我把代码当初恋」心态,最后得到的「套路」。

合理:在使用前要对设计模式的使用场景有一定的了解,「不要滥用」。例如:输出一句话hello world必须强行添加各种模式。问:为什么,答:总觉得模式少了!

巧妙地解决了许多问题:被广泛使用的原因。

为什么要提倡为什么要提倡Design Pattern呢?根本原因是代码重用,增加了可维护性。那么如何实现代码重用呢?设计模式六大原则开闭原则(Open Close Principle)1988年,勃兰特·梅耶(Bertrand Meyer)在他的作品《面向对象的软件结构》中(Object Oriented Software Construction)》其原文提出了开闭原则:Software entities should be open for extension,but closed for modification意思:软件模块应对扩展和修改进行开放和关闭。例如:当程序需要添加新功能时,不能修改原始代码,而是添加新代码,以实现热插拔(热插拔:灵活删除或添加功能,不影响原始功能)的效果。目的:为了使程序具有良好的可扩展性,易于维护和升级。里氏替换原则(Liskov Substitution Principle)意思:里氏替代原则是继承复用的基石,只有当衍生物可以替代基本类别,软件单位的功能不受影响时,基本类别才能真正重复使用,衍生物也可以在基本类别的基础上增加新的行为。例如:球,最初是一种运动用品,其衍生物包括篮球、足球、排球、羽毛球等,如果衍生物取代了原来的基本方法,如将运动用品改为食用品(然后影响软件单位的功能),则不符合里氏替代原则。目的:实现抽象化具体步骤的标准化。依靠逆转原则(Dependence Inversion Principle)意思:针对接口编程,而不是实现编程。例如:以计算机系统为例,无论主板,CPU、内存和硬件都是为接口设计的。如果设计是为了实现,内存应该对应于某个品牌的主板,所以会有换内存需要换主板的尴尬。目的:减少模块之间的耦合。接口隔离原则(Inte ** ce Segregation Principle)使用多个隔离接口比使用单个接口要好。例如:注册时属于用户模块的两个接口,比写接口好。目的:提高程序设计的灵活性。迪米特法则(至少知道原则)(Demeter Principle)1987秋天由美国决定Northeastern University的Ian Holland提出,被UML创始人之一[Booch]等待普及。后来因为经典著作《 The Prag ** tic Programmer》而广为人知。意思:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。举例:一个类公开的public属性或方法越多,修改涉及的范围越大,变更引起的风险扩散越大。目的:减少类别之间的耦合,减少对其他类别的依赖。单一责任原则( Single responsibility principle这一原则由罗伯特制定·C·马丁(Robert C. Martin)在《敏捷软件开发:原则、模式和实践》一书中给出。马丁说,这一原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones内聚性原则在工作中发展起来。意思:一类只负责一个功能领域的相应职责,或者可以定义为:对于一个类,应该只有一个原因导致它的变化。例如:这个原则太简单了,不需要举例!目的:降低类别的复杂性、可读性和可维护性。

当我第一次进入这个行业时,我在想什么样的代码是好的代码?看到很多前辈的话说好的代码应该符合「高内聚,低耦合」,但我听到了这样的解释,是这样的

现在我对设计模式有了一定程度的了解。我觉得我理解了一些。你学会了吗?高内聚,低耦合?内聚是从功能角度测量模块中的连接。一个好的内聚模块应该只做一件事。它描述了模块中的功能连接;耦合是软件结构中模块之间连接的测量。耦合强度取决于模块间接口的复杂性、进入或访问模块点以及通过接口的数据。

扫码免费用

源码支持二开

申请免费使用

在线咨询