设计模式(通往高手之路的必备技能)

简介: ‘从大处着眼,从小处着手’,以前对这句话一知半解,自从踏出校门走入社会,开始工作以来,有了越来越深的理解,偶有发现这句话用在程序开发中也有用,所以,近段时间开始尝试着分析jQuery源码,分析angularjs源码,学习设计模式。

‘从大处着眼,从小处着手’,以前对这句话一知半解,自从踏出校门走入社会,开始工作以来,有了越来越深的理解,偶有发现这句话用在程序开发中也有用,所以,近段时间开始尝试着分析jQuery源码,分析angularjs源码,学习设计模式。

设计模式的由来

看过GOF的总结的23种设计模式的人,都或多或少的有种似曾相识的感觉,事实确实如此,这些设计模式原来就有,是前人优秀的工作成果,只不过是GOF他们给这些原本就有的东西重新定义了一下,给予这些东西名称和原理,使之更容易被人理解和接受,这本身就体现了GOF的伟大,让好的东西更容易传播。

设计模式的定义

在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。

如何学习设计模式

设计模式也并不是什么洪水猛兽,高不可攀,一个有一定经验的软件开发者都会在不知不觉中使用它,这可能中间经历了很多的尝试,当他看过设计模式后,会发现原来已经有人对它进行过总结。

使用设计模式实现的代码,使用一般的方法都能实现,所以使用设计模式,会无形中增加代码的量,尤其是不正确的使用,更会带来毁灭性的灾难,所以,一般的开发人员唯恐避之不及。

理解‘可复用的面向对象软件基础’

设计模式的实现都遵循一条原则‘找出程序中变化的地方,并将它封装起来’。在程序设计中总分为可变的地方和不可变的地方,可变的地方我们往往将他封装起来,不可变的地方也即是代码稳定和不可变的部分的,往往这部分代码是可复用的。这也是标题《可复用的面向对象软件基础》的由来。

好了,废话不多说,下面进入常见的设计模式学习。

如何分辨设计模式

有时侯我们经常会遇到这样的问题,许多设计模式的实现看起来几乎一模一样,比如:代理模式和装饰者模式,策略模式和状态模式。

你不仅会大声问,他们有什么区别呢?

其实,从代码结构上看并没什么区别,就像一把手枪,你拿它来杀人,它就是凶器,你拿它来救人它就是武器。跟你的用途有关系,其实最根本的是你的意图。所以,在学习设计模式的时候,不要在在意代码的结构形式,要多留意模式的使用场景,在这种场景下解决了什么问题,多进行对比(使用前,使用后有何差别)。

重新审视JavaScript设计模式

JavaScript从开始被人当成为一种玩具语言,到后来发展为一门流行的可靠的语言。人们从开发做一些简单的交互,到后来Google做的第一个邮件系统,再到后来Google推出的angular框架的出现,js的威力在被人们认识的同时,伴随着浏览器支持js做更多的东西,与此同时它也变得痈肿起来,框架间各种复杂的依赖甚至能让你崩溃。随着ES6, TypeScript, CoffeScript 等各种转编译语言的兴起,无疑给前端开发者带来了不小的学习压力。像React,vue,angular这些当下流行的框架,大家都知道一些,但是要说有深入研究,不见得有多少人。17年年底我发现各个公司的在招人时,对开发人员的要求越来越高,要知道这些框架的原理,要知道某些具体的功能如何实现,同时对于设计模式的考察也越来越突出。所以,基于开发语言的使用环境,以及工作面试需要,我们不得不认真对待JavaScript常见的设计模式。

从前由于使用的局限性,和做的应用相对简单,js不被重视,js就更谈不上设计模式的问题。虽然,现在JavaScript被开发人员越来越重视,但是JavaScript设计模式的讨论还不是那么活跃,有研究和见地的还是少数人,但是研究过源码的同学就会知道,在vue,angular种设计模式已经相当普遍。

作为一个励志成为前端小牛的我,现在也甚是心痒。

目录

‘大处着眼,小处着手’——设计模式系列

注:这是我个人对设计模式的认识和理解,仅代表个人观点个看法,不足之处欢迎大家指正,随着认识的加深这篇文章(包括设计模式其他系列文章)会不断地进行更新。

javascript 设计模式

面向对象的JavaScript

构造器 设计模式

外观 设计模式

工厂 设计模式

观察者 设计模式

单例 设计模式

持续更新中...

参考资料

学习JavaScript设计模式

腾讯全端 AlloyTeam 设计模式系列文章

JavaScript设计模式与开发实践

其它设计模式相关文章请转‘大处着眼,小处着手’——设计模式系列

相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
编程之路:从代码到哲学的感悟
【10月更文挑战第42天】在编程的世界里,每一行代码都是思想的体现。本文将通过个人的技术成长经历,探讨如何从简单的代码编写进阶到对技术哲学的理解。我们将一起走进编程的内在世界,发现那些隐藏在键盘敲击背后的深刻意义。
|
1月前
编程之路:从代码到哲学的思考之旅
在数字世界的编织中,每一行代码都是我们与机器对话的语言。本文将带领读者穿梭于编程的世界,探索技术背后的深层意义,以及如何通过代码实现个人成长和对世界的理解。我们将一起走进编程的内在逻辑,解锁那些隐藏在键盘敲击声中的哲理,并分享一些实用的编程技巧。
31 3
编程之路:从迷茫到精通的旅程
在这篇文章中,我们将一起探索编程世界的奥秘。无论你是刚刚踏入编程领域的新手,还是已经在这条路上走过一段距离的老手,都能在这里找到共鸣和启发。我们将通过一个简单的代码示例,揭示编程背后的思考过程和解决问题的策略。让我们一起走进编程的世界,解锁更多可能!
|
2月前
|
设计模式 监控 算法
Python编程中的设计模式应用与实践感悟###
在Python这片广阔的编程疆域中,设计模式如同导航的灯塔,指引着开发者穿越复杂性的迷雾,构建出既高效又易于维护的代码结构。本文基于个人实践经验,深入探讨了几种核心设计模式在Python项目中的应用策略与实现细节,旨在为读者揭示这些模式背后的思想如何转化为提升软件质量的实际力量。通过具体案例分析,展现了设计模式在解决实际问题中的独特魅力,鼓励开发者在日常编码中积极采纳并灵活运用这些宝贵的经验总结。 ###
|
2月前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####
|
4月前
|
设计模式 算法 数据安全/隐私保护
软件工程师,不懂点设计模式怎么行
软件工程师,不懂点设计模式怎么行
47 10
|
8月前
|
机器学习/深度学习 设计模式 SQL
编程之路上的飞跃:那些让我技能显著提升的关键概念与技术
编程之路上的飞跃:那些让我技能显著提升的关键概念与技术
88 10
|
8月前
|
设计模式 Java 开发者
设计模式:软件开发的秘密武器
设计模式:软件开发的秘密武器
|
5月前
|
设计模式 算法 开发者
后端开发中的设计模式探索之旅
【8月更文挑战第21天】设计模式是解决常见问题的优雅方案,它们在软件开发中扮演着至关重要的角色。本文将带你走进后端开发的世界,探索设计模式如何影响代码结构、提升可维护性与扩展性,并分享一些实用的设计模式案例。通过深入浅出的方式,我们将一起理解设计模式背后的哲学和它们在日常开发工作中的应用价值。
|
5月前
|
前端开发 数据可视化 数据挖掘
探索技术之路:我的编程旅程
【8月更文挑战第7天】在数字时代的浪潮中,编程已成为一种重要的技能。本文将分享我个人的编程学习经历,包括初识编程的喜悦、面对挑战时的困惑与坚持,以及在实践中不断成长的过程。通过这段旅程,我深刻体会到了编程的魅力和挑战,并希望我的经历能为同样热爱编程的你带来一些启示。让我们一起在编程的道路上不断前行,探索更广阔的技术世界。
84 11