Java软件设计模式全解析

开课吧广场科科2021-06-10 10:48

点赞
有用
分享分享

设计模式是软件开发人员的“标准词汇”,学习设计模式是个人技术能力提高的捷径。设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要”。今天我们来具体解释一下设计模式。

设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。

1977年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(ChristopherAlexander)在他的著作《建筑模式语言:城镇、建筑、构造(APatternLanguage:TownsBuildingConstruction)中描述了一些常见的建筑设计问题,并提出了253种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。

1979年他的另一部经典著作《建筑的永恒之道》(TheTimelessWayofBuilding)进一步强化了设计模式的思想,为后来的建筑设计指明了方向。

1987年,肯特·贝克(KentBeck)和沃德·坎宁安(WardCunningham)首先将克里斯托夫·亚历山大的模式思想应用在Smalltalk中的图形用户接口的生成中,但没有引起软件界的关注。

直到1990年,软件工程界才开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。

1995年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(RichardHelm)、拉尔夫·约翰森(RalphJohnson)、约翰·威利斯迪斯(JohnVlissides)等4位作者合作出版了《设计模式:可复用面向对象软件的基础》(DesignPatterns:ElementsofReusableObject-OrientedSoftware)一书,在本教程中收录了23个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这4位作者在软件开发领域里也以他们的“四人组”(GangofFour,GoF)匿名著称。

Java设计模式

软件设计模式的概念与意义

有关软件设计模式的定义很多,有些从模式的特点来说明,有些从模式的作用来说明。本教程给出的定义是大多数学者公认的,从以下两个方面来说明。

1.软件设计模式的概念

软件设计模式(SoftwareDesignPattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。

2.学习设计模式的意义

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点。

可以提高程序员的思维能力、编程能力和设计能力。

使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。

使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

当然,软件设计模式只是一个引导。在具体的软件幵发中,必须根据设计的应用系统的特点和要求来恰当选择。对于简单的程序开发,苛能写一个简单的算法要比引入某种设计模式更加容易。但对大项目的开发或者框架设计,用设计模式来组织代码显然更好。

软件设计模式的基本要素

软件设计模式使人们可以更加简单方便地复用成功的设计和体系结构,它通常包含以下几个基本要素:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,其中最关键的元素包括以下4个主要部分。

1.模式名称

每一个模式都有自己的名字,通常用一两个词来描述,可以根据模式的问题、特点、解决方案、功能和效果来命名。模式名称(PatternName)有助于我们理解和记忆该模式,也方便我们来讨论自己的设计。

2.问题

问题(Problem)描述了该模式的应用环境,即何时使用该模式。它解释了设计问题和问题存在的前因后果,以及必须满足的一系列先决条件。

3.解决方案

模式问题的解决方案(Solution)包括设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象的组合)来解决这个问题。

4.效果

描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。主要是对时间和空间的衡量,以及该模式对系统的灵活性、扩充性、可移植性的影响,也考虑其实现问题。显式地列出这些效果(Consequence)对理解和评价这些模式有很大的帮助。

设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果:知道各种设计模式,但是不知道怎么使用到真实项目。

开课吧【Spring常见设计模式剖析】线上免费课程,告别烂代码,让实现优雅起来。

主讲老师李振东,开课吧Java资深讲师,先后就职于大唐电信、方正集团、国美在线,国家电网,十余年IT从业经验,曾负责酷派手机网上商城项目、哈弗H2网上商城项目、易购购网上商城项目、NPOP项目,前国家电网网上商城技术负责人&首席架构师。

面向人群:

设计模式

课程亮点:

设计模式

课程大纲:

设计模式

如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧,点击以上图片马上免费报名开始学习之旅!更多Java教程相关内容尽在开课吧广场Java教程频道!

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享