WAF越来越让人失望?
御姐力作,深入浅出,妙趣横生,值得一看! ## 引言 你好,欢迎来到设计模式的世界,这一篇我将用一种引导、启迪的思路去讲述设计模式。在程序员的世界里,设计模式就相当于武侠世界的剑招、套路。掌握了招式,你的武学修为会得到极大提升,最终达到无招胜有招的境界。 + 首先,我会告诉大家设计模式是什么,不是什么。 + 然后,简单介绍一下设计模式的分类,简单罗列一下各设计模式。 + 接着,阐述面向对象设计一个非常重要的设计原则:**合成复用原则**,它是核心原则,提高复用一直是软件工程师的不懈追求,它贯穿于设计模式一书。 + 最后,从实用出发,我会详细描述两个最经典最常用的设计模式:单例和观察者。我不只是介绍这两种模式的用途和实现方式,还会结合自己工作实践,抛出限制与约束,提醒注意点,以及跟其他模式的配合方式。 希望你学完这一节,可以触类旁通,在实际项目中用好设计模式,为社会做贡献。 ## 什么是设计模式 一门工程一定会有很多实践性的经验总结。就好比造大桥,人们会总结拱桥有哪些部件组成,有什么特点,有什么适用场合,悬索桥又有什么部件、特点、使用场合。这些从实践中提炼出来的建筑模式又可以指导新出现的需求,比如去设计一个某市长江大桥,你会思考有哪个成熟的模式可以适用,在这个模式下,又要如何根据实际需求定制化地设计各个部件。 软件工程也是如此。 设计模式是设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,是被反复使用,多数人知晓的,经过分类编目的代码设计经验的总结。 + 设计模式是一般问题的解决方案。分析多种多样的具体需求,常常会发现结构上和行为上具有的共性,常常会产生相似的设计。设计模式是脱离了具体需求的,某类共性问题的解决方案。 + 设计模式是程序设计的经验总结。在其适用范围内正确地使用设计模式通常会产生高质量的设计。 + 设计模式弥补了编程语言的缺陷。设计模式实现了创建时多态、双重分派等在主流编程语言中不直接提供的功能。反过来,近年来设计思想和设计模式的发展也影响了新兴语言的语言规范。 + 设计模式是软件工程师的一套术语。完整地描述一个设计通常要花费相当的篇幅,通过对设计归类,可以便于快速表达设计的特点。 ## 设计模式不是什么 + 不是普适原则。设计模式并不是如SOLID设计原则一样是放之四海而皆准的普适的原则。每个设计模式都有其适用场景,必须根据实际情况分析决定采用哪种设计模式或不使用设计模式。在一个软件项目中设计模式并不是用得越多越好,符合实际需求的高质量的独特设计也是好设计。 + 不是严格规范。设计模式是经验的总结,允许根据实际需要改变和改进。采用了设计模式并不意味着类的结构甚至命名都要与模式严格符合。在应用设计模式时应着重吸取其设计思路,根据实际需求进行设计。尤其是很多设计模式中的名称过于宽泛,在实际项目中并不适合用作类名。 + 不是具体类库。设计模式有助于代码复用,但模式本身并不是可直接复用的代码。在设计模式中担任特定角色的并不是特定的一个类,通常需要在具体设计中结合具体需求来实现。现代编程语言中的模板、泛型等语言特性有助于写出更加通用的代码,但对于很多设计模式,完全通用的代码库既难实现,又难使用。 + 不是行业解决方案。并没有说哪个模式特别适合互联网、哪个模式专门针对自动化。设计模式关注软件结构内在的共性,而与具体的业务领域无关。
有工程师言必称设计模式,生搬硬套设计模式,之后又出现反设计模式的思潮,认为设计模式是骗局,无助于软件质量提升。我认为,无论是神化设计模式亦或是反设计模式都是走极端,都是错误的。设计模式为我们解决一些通用性的问题提供了良好借鉴,且在大多数情况下,行之有效。设计模式并不绝对通用,在实际项目中如何抉择用哪个设计模式或是不用设计模式,非常考验工程师的水平和经验。 (编辑:济源站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |